web-dev-qa-db-fra.com

Quelle est la différence entre la bibliothèque d'assertions, le framework de test et l'environnement de test en javascript?

Chai est une bibliothèque d'assertions.

Mocha et Jasmine sont des frameworks de test.

et Karma est un environnement de test.

J'ai déjà lu Différence entre les frameworks de test disponibles: mocha, chai, karma, jasmine, should.js etc. .

49
Nader

Les bibliothèques d'assertions sont des outils pour vérifier que les choses sont correctes.
Cela facilite grandement le test de votre code, vous n'avez donc pas à faire des milliers d'instructions if.
Exemple (en utilisant le module d'assertion should.js et Node.js):

var output = mycode.doSomething();
output.should.equal('bacon'); //should.js
assert.eq(output, 'bacon'); //node.js assert

// The alternative being:
var output = mycode.doSomething();
if (output !== 'bacon') {
  throw new Error('expected output to be "bacon", got '+output);
}

Les frameworks de test sont utilisés pour organiser et exécuter des tests.
Le moka et le jasmin sont deux choix populaires (et ils sont en fait un peu similaires).
Exemple (en utilisant mocha avec should.js ici):

describe('mycode.doSomething', function() {
  it ('should work', function() {
    var output = mycode.doSomething();
    output.should.equal('bacon');     
  });
  it ('should fail on an input', function() {
    var output = mycode.doSomething('a input');
    output.should.be.an.Error;
  });
});

Les environnements de test sont les endroits où vous exécutez vos tests.

Karma est un peu un cas Edge, dans le sens où c'est un peu un outil unique, pas beaucoup comme ça. Karma fonctionne en exécutant vos tests unitaires à l'intérieur des navigateurs (par défaut PhantomJS, un navigateur WebKit sans tête), pour vous permettre de tester le code JavaScript basé sur un navigateur.

Des cadres comme Mocha et Jasmine fonctionnent à la fois dans le navigateur et avec Node.js, et sont généralement définis par défaut sur Node.

46
Zach Mertes

L'environnement de test (ou lanceur de test) est ce qui exécute tous vos tests. Il les lance, agrège les résultats, etc.

Le cadre de test est ce que vous utilisez pour créer chacun des tests. Par exemple, jasmine utilise une syntaxe de

it('name of test', function() {
   // do some tests
});

La bibliothèque d'assertions est ce que fait la vérification réelle de vos résultats de test

it('name of test', function() {
   assert x == 5 //pseudocode, the syntax will vary based on your asserting framework 
});
44
Jeff Storey