Mocha/Chai/ChaiAsPromised : expect(promise).最终不等待解决
Mocha/Chai/ChaiAsPromised : expect(promise).eventually not waiting for resolution
我有一个功能要测试。它 returns 一个承诺。这是一个假的版本,它只是稍等片刻然后解决了 promise。
function testee(){
let myPromise = new Promise(
(resolve, reject) => {
setTimeout( () => {
resolve( 777 );
}, 1000);
}
);
return myPromise;
}
我正在使用 Mocha、Chai 和 ChaiAsPromised,我尝试最终使用进行测试,认为这将等待 promise 解决。我故意写了一个应该失败的测试,但它通过了。为什么?
var chai = require('chai') ;
var chaiAsPromised = require("chai-as-promised");
var expect = chai.expect;
chai.use(chaiAsPromised);
describe("Testing Promises", function() {
it("should return a particular value ", function() {
const testPromise = testee();
// no matter what I specify in the equal it always passes the test
expect(testPromise).to.eventually.equal(490);
});
我知道还有其他方法可以在 Mocha 下管理异步处理,或者避免使用 Promises,但我想了解为什么我的测试没有像我预期的那样失败。
由于断言语句是异步代码,您应该return断言语句,以便mocha
知道它应该等待调用此函数来完成测试。
请阅读mocha
的doc about chai-as-promised
and asynchronous-code。
const { testee } = require('.');
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
var expect = chai.expect;
chai.use(chaiAsPromised);
describe('Testing Promises', function () {
it('should return a particular value ', function () {
const testPromise = testee();
return expect(testPromise).to.eventually.equal(777);
});
});
我有一个功能要测试。它 returns 一个承诺。这是一个假的版本,它只是稍等片刻然后解决了 promise。
function testee(){
let myPromise = new Promise(
(resolve, reject) => {
setTimeout( () => {
resolve( 777 );
}, 1000);
}
);
return myPromise;
}
我正在使用 Mocha、Chai 和 ChaiAsPromised,我尝试最终使用进行测试,认为这将等待 promise 解决。我故意写了一个应该失败的测试,但它通过了。为什么?
var chai = require('chai') ;
var chaiAsPromised = require("chai-as-promised");
var expect = chai.expect;
chai.use(chaiAsPromised);
describe("Testing Promises", function() {
it("should return a particular value ", function() {
const testPromise = testee();
// no matter what I specify in the equal it always passes the test
expect(testPromise).to.eventually.equal(490);
});
我知道还有其他方法可以在 Mocha 下管理异步处理,或者避免使用 Promises,但我想了解为什么我的测试没有像我预期的那样失败。
由于断言语句是异步代码,您应该return断言语句,以便mocha
知道它应该等待调用此函数来完成测试。
请阅读mocha
的doc about chai-as-promised
and asynchronous-code。
const { testee } = require('.');
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
var expect = chai.expect;
chai.use(chaiAsPromised);
describe('Testing Promises', function () {
it('should return a particular value ', function () {
const testPromise = testee();
return expect(testPromise).to.eventually.equal(777);
});
});