Was ist der Unterschied zwischen Assertion Library, Testing Framework und Testing Environment in Javascript?

Lesezeit: 3 Minuten

Benutzeravatar von Nader
Nader

Tschai ist eine Behauptungsbibliothek.

Mokka und Jasmin sind Testframeworks.

und Karma ist eine Testumgebung.

Ich habe bereits den Unterschied zwischen verfügbaren Testframeworks gelesen: mocha, chai, karma, jasmine, should.js etc.

  • Um die Sache noch komplexer zu machen, gibt es auch Selenium Webdriver Node.JS-Clientsvon denen Sie in einigen Jasmine-, Cucumber- oder Moca+Chai-Tests ausführen können (z. B. WebdriverIO).

    – Dan Dascalescu

    3. August 2015 um 9:03 Uhr


  • Die Frage ist nicht gut geschrieben, da das OP Beispiele für die drei Dinge gibt, zu denen es eine Klärung wünscht, und sogar einen Link für weitere Informationen angegeben hat. Es ist fast eine eigene Antwort auf den Fragentitel. Ich gehe jedoch davon aus, dass das OP angesichts der bereitgestellten Informationen eine detailliertere Aufschlüsselung wünscht. Aber es wäre hilfreich zu wissen, welche Teile dem OP noch unklar sind.

    – redfox05

    5. August 2016 um 18:04 Uhr

Benutzeravatar von Zoey Mertes
Zoey Mertes

Assertionsbibliotheken sind Werkzeuge, um zu überprüfen, ob die Dinge korrekt sind.
Dies macht es viel einfacher, Ihren Code zu testen, sodass Sie nicht Tausende von Tests durchführen müssen if Aussagen.
Beispiel (mit should.js und Node.js-Assert-Modul):

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

Testframeworks werden verwendet, um Tests zu organisieren und auszuführen.
Mocha und Jasmine sind zwei beliebte Optionen (und sie sind sich eigentlich ziemlich ähnlich).
Beispiel (mit mocha mit should.js hier):

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

Testumgebungen sind die Orte, an denen Sie Ihre Tests ausführen.

Karma ist ein bisschen ein Grenzfall, in dem Sinne, dass es eine Art einmaliges Werkzeug ist, das nicht viele mögen. Karma funktioniert, indem es Ihre Einheitentests innerhalb von Browsern ausführt (standardmäßig PhantomJS, ein Headless-WebKit-Browser), damit Sie browserbasierten JavaScript-Code testen können.

Frameworks wie Mocha und Jasmine funktionieren sowohl im Browser als auch mit Node.js und verwenden normalerweise standardmäßig Node.

  • Tut mir leid, ich verstehe es immer noch nicht. Sowohl das Testframework als auch der Testrunner können meinen Test ausführen. Warum brauchen wir Karma??

    – Nader

    5. September 2014 um 3:38 Uhr


  • @Nader Karma macht es viel einfacher, browserbasierten JavaScript-Code zu testen, ansonsten müssen Sie die Tests im Grunde nur in Node.js ausführen. Während Node für viele Dinge in Ordnung ist, funktioniert es nicht so gut für browserbasierten Code.

    – Zoey Mertes

    5. September 2014 um 3:42 Uhr


  • Ich mag Ihr Beispiel einer Behauptung in Vanilla JS. Es sollte betont werden, dass Sie Unit-Tests ohne Assertion-Bibliothek schreiben können. Assertionsbibliothek ist wie sollte.js, ChaiJSoder Node.js-Assert sind bloß syntethischer Zucker weil sie menschenlesbarere Tests bieten, indem sie es Ihnen ermöglichen, Assertionen in einer natürlichen Sprachsyntax zu schreiben.

    – Gfullam

    7. September 2016 um 12:59 Uhr


Die Testumgebung (oder Test Runner) führt alle Ihre Tests aus. Es startet sie, aggregiert Ergebnisse usw.

Das Testframework ist das, was Sie verwenden, um jeden der Tests zu erstellen. Beispielsweise verwendet Jasmine eine Syntax von

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

Die Behauptungsbibliothek ist das, was die eigentliche Überprüfung Ihrer Testergebnisse durchführt

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

  • Beachten Sie, dass das Testframework auch Ergebnisse aggregieren kann. Mokka hat zB mehrere verschiedene Reporter.

    – Maria Ines Parnisari

    22. November 2016 um 18:32 Uhr

Versuchen Sie eine einfachere Antwort. Ich bin ein Noob, aber so klingt es.

Mocha organisiert die Tests und ist der Ort, an dem Sie mit den Tests beginnen. Es gibt grundlegende “Behauptung” in nodeJS, die Sie verwenden können, um Dinge wie erwartet zu testen.

Chai ist ein Weg dazu erweitern das “Behauptung“Framework, damit Sie semantisch hilfreichere Dinge schreiben können wie:

expect(foo).to.be.a('string');

anstelle eines weniger expliziten Stils:

assert.ok(typeOf(foo) ==='string')

Oder etwas mit weniger semantischem Kontext.

1405380cookie-checkWas ist der Unterschied zwischen Assertion Library, Testing Framework und Testing Environment in Javascript?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy