Takeaways utama:
chai-as-promised
Bermula (Mocha & Chai):
Pasang mocha dan 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(); }); });
done()
sokongan janji terbina dalam mocha memudahkan ini:
Janji yang ditolak secara automatik gagal ujian. Contoh awal kami dapat diperbaiki:
it('should fail the test', function() { return Promise.reject('this promise will always be rejected'); });
kembali janji menghapuskan keperluan untuk
dan pengendalian ralat eksplisit.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); }); });
done()
Meningkatkan ujian dengan
chai-as-promised
Pasang :
chai-as-promised
Perpustakaan ini membolehkan pernyataan lebih ringkas:
npm install chai-as-promised
Kata kunci
mengendalikan sifat asynchronous janji. Ingatlah untuk selalu mengembalikan janji. Pelbagai pernyataan chai berfungsi denganvar 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); });
eventually
eventually
Corak berguna:
eventually.deep.equal
atau eventually.become
untuk perbandingan objek dalam. Promise.all
untuk mengendalikan pelbagai janji secara serentak (tetapi berhati -hati dengan kod berpotensi dari pelbagai pernyataan dalam satu ujian). Promise.all
untuk menyelesaikan janji dan kemudian membandingkan hasil. to.be.rejected
dan to.be.rejectedWith
untuk pernyataan penolakan. before
, after
, beforeEach
, dan afterEach
cangkuk. Janji dan Mocks/Stubs (dengan Sinon.js):
Pasang Sinon.js:
npm install mocha chai
Gunakan sinon.stub().returns(Promise.resolve/reject(...))
untuk membuat janji -janji yang kembali. Pertimbangkan sinon-as-promised
untuk janji yang dipermudahkan.
KESIMPULAN:
dengan mocha, chai, dan chai-as-promised
, ujian ujian menjadi lebih bersih dan lebih mudah dibaca. Sentiasa kembali janji dari fungsi ujian anda. Projek Contoh yang Disediakan (Pautan Tidak Tersedia) menawarkan contoh praktikal.
Soalan Lazim (Soalan Lazim): (Soalan Lazim asal ditinggalkan kerana panjang dan redundansi. Mereka sebahagian besarnya menutup maklumat yang sudah ada dalam artikel.)
Atas ialah kandungan terperinci Janji dalam Ujian Unit JavaScript: Panduan Definitif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!