Wat is het verschil tussen assertion-bibliotheek, testraamwerk en testomgeving in javascript?

Chaiis een beweringbibliotheek.

Mokkaen Jasminezijn testkaders.

en Karmais een testomgeving.

Ik heb Verschil tussen beschikbare tests al gelezen frameworks: mokka, chai, karma, jasmijn, should.js enz..


Antwoord 1, autoriteit 100%

Beweringbibliotheken zijn hulpmiddelen om te controleren of dingen correct zijn.
Dit maakt het een stuk eenvoudiger om uw code te testen, zodat u niet duizenden if-instructies hoeft te doen.
Voorbeeld (met behulp van should.js en Node.js assert module):

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);
}

Testkaders worden gebruikt om tests te organiseren en uit te voeren.
Mokka en Jasmine zijn twee populaire keuzes (en ze lijken eigenlijk een beetje op elkaar).
Voorbeeld (hier mokka gebruiken met should.js):

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;
  });
});

Testomgevingen zijn de plaatsen waar u uw tests uitvoert.

Karma is een beetje een randgeval, in die zin dat het een eenmalig hulpmiddel is, niet veel zoals het. Karma werkt door uw unit-tests in browsers uit te voeren (standaard ingesteld op PhantomJS, een headless WebKit-browser), zodat u browsergebaseerde JavaScript-code kunt testen.

Frameworks zoals Mocha en Jasmine werken zowel in de browser als met Node.js, en zijn meestal standaard ingesteld op Node.


Antwoord 2, autoriteit 85%

De testomgeving (of testrunner) voert al je tests uit. Het lanceert ze, verzamelt resultaten, enz.

Het testraamwerk is wat u gebruikt om elk van de tests te maken. Jasmijn gebruikt bijvoorbeeld een syntaxis van

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

De beweringbibliotheek is wat de daadwerkelijke verificatie van uw testresultaten doet

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

Other episodes