JavaScript verspricht vereinfachen die asynchrone Codierung, das Testen kann jedoch schwierig sein. In diesem Leitfaden wird klargestellt, wie man Versprechungen innerhalb von Unit -Tests effektiv behandelt, um häufige Fallstricke zu vermeiden und die Code -Lesbarkeit zu verbessern. Ein Beispielprojekt, das diese Techniken veranschaulicht, ist auf der Website des Autors verfügbar (Link nicht im Originaltext).
Key Takeaways:
chai-as-promised
Erste Schritte (Mokka & Chai):
installieren Sie Mocha und Chai:
npm install mocha chai
var expect = require('chai').expect; it('should do something with promises', function(done) { var blah = 'foo'; var result = systemUnderTest(); result.then(function(data) { expect(data).to.equal(blah); done(); }, function(error) { assert.fail(error); done(); }); });
fügt unnötige Komplexität hinzu. Ohne ordnungsgemäße Fehlerbehandlung könnte ein abgelehntes Versprechen zu einem falsch Positiven führen. done()
Mocha und Versprechen:
Mochas integriertes Versprechensunterstützung vereinfacht dies:
it('should fail the test', function() { return Promise.reject('this promise will always be rejected'); });
var expect = require('chai').expect; it('should do something with promises', function() { var blah = 'foo'; var result = systemUnderTest(); return result.then(function(data) { expect(data).to.equal(blah); }); });
und explizitem Fehler umgehen. done()
Verbesserung von Tests mit : chai-as-promised
: chai-as-promised
npm install chai-as-promised
var chai = require('chai'); var expect = chai.expect; var chaiAsPromised = require('chai-as-promised'); chai.use(chaiAsPromised); it('should do something with promises', function() { var blah = 'foo'; var result = systemUnderTest(); return expect(result).to.eventually.equal(blah); });
behandelt die asynchrone Natur des Versprechens. Denken Sie daran, das Versprechen immer zurückzugeben. Verschiedene Chai -Behauptungen funktionieren mit eventually
. eventually
Nützliche Muster:
eventually.deep.equal
oder eventually.become
für tiefe Objektvergleiche. Promise.all
, um mehrere Versprechen gleichzeitig zu versprechen (aber potenzielle Code -Gerüche aus mehreren Behauptungen in einem einzigen Test achten). Promise.all
, um Versprechen zu lösen und dann die Ergebnisse zu vergleichen. to.be.rejected
und to.be.rejectedWith
für Abstoßungsbehörden. before
, after
, beforeEach
und afterEach
Haken. Versprechen und Mocks/Stubs (mit Sinon.js):
Installieren Sie sinon.js:
npm install mocha chai
Verwenden Sie sinon.stub().returns(Promise.resolve/reject(...))
, um Stubs zu erstellen, die Versprechen zurückgeben. Betrachten Sie sinon-as-promised
für vereinfachtes Versprechen Stubbing.
Schlussfolgerungen:
Mit Mokka, Chai und chai-as-promised
wird das Testversprechen erheblich sauberer und lesbarer. Rücken Sie immer Versprechen aus Ihren Testfunktionen zurück. Das bereitgestellte Beispielprojekt (Link nicht verfügbar) bietet praktische Beispiele.
häufig gestellte Fragen (FAQs): (Die ursprünglichen FAQs sind aufgrund von Länge und Redundanz weggelassen. Sie behandeln weitgehend die Informationen, die bereits im Artikel vorhanden sind.)
Das obige ist der detaillierte Inhalt vonVersprechen in JavaScript -Unit -Tests: Die endgültige Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!