176 votes

Comment se concentrer sur une seule spécification dans jasmine.js ?

J'ai un tas de spécifications défaillantes provenant d'un changement architectural assez important. J'aimerais travailler à les corriger une par une en les étiquetant avec le mot " focus ".

Est-ce que jasmine.js possède une fonctionnalité de ce type ? Je jure avoir lu à un moment donné que c'est le cas, mais je ne le vois pas dans la documentation.

296voto

Hudvoy Points 218

Lorsque vous utilisez Karma, vous ne pouvez activer qu'un seul test avec fit ou fdescribe ( iit et ddescribe dans Jasmine avant 2.1).


Cela ne fonctionne que Spec1 :

// or "ddescribe" in Jasmine prior 2.1
fdescribe('Spec1', function () {
    it('should do something', function () {
        // ...
    });
});

describe('Spec2', function () {
    it('should do something', function () {
        // ...
    });
});

Cela ne fonctionne que testA :

describe('Spec1', function () {

    // or "iit" in Jasmine prior 2.1
    fit('testA', function () {
        // ...
    });

    it('testB', function () {
        // ...
    });

});

60voto

Andreas Köberle Points 16453

Vous pouvez exécuter une seule spécification en utilisant l'url de la spécification.

describe("MySpec", function() { 
  it('function 1', function() { 
    //... 
  }) 

  it('function 2', function() { 
    //... 
  } 

}) 

Maintenant, vous pouvez exécuter l'ensemble de la spécification par cette url. http://localhost:8888?spec=MySpec et un premier test avec http://localhost:8888?spec=MySpec+function+1

25voto

albemuth Points 194

Pour toute personne tombant sur ce problème, une meilleure approche, que vous pouvez configurer à partir du code lui-même, est d'utiliser ce plugin : https://github.com/davemo/jasmine-only

Il vous permet de définir l'exclusivité de la spécification directement sur le code, comme ceci :

describe.only("MySpec", function() { 
  it('function 1', function() { 
    //... 
  }) 

  it.only('function 2', function() { 
    //... 
  }
})
// This won't be run if there are specs using describe.only/ddescribe or it.only/iit
describe("Spec 2", function(){}) 

Il y a eu une longue discussion pour que cela soit ajouté au noyau de Jasmine, voir : https://github.com/pivotal/jasmine/pull/309

Si vous utilisez Jasmine par le biais de Karma/Testacular, vous devriez déjà avoir accès aux éléments suivants ddescribe() et iit()

8voto

Eric Bock Points 845

Vous pouvez créer toutes vos spécifications à l'avance mais les désactiver avec xdescribe et xit jusqu'à ce que vous soyez prêt à les tester.

describe('BuckRogers', function () {
  it('shoots aliens', function () {
    // this will be tested
  });

  xit('rescues women', function () {
    // this won't
  });
});

// this whole function will be ignored
xdescribe('Alien', function () {
  it('dies when shot', function () {
  });
});

1voto

taro Points 81

Avec Jasmine autonome (2.0.0), sur le spec_runner.htlm, je pouvais cliquer sur une spécification particulière et me concentrer sur cette spécification. J'aurais dû remarquer cette fonctionnalité plus tôt.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X