柴如承诺即使错了也会过去

Chai-As-Promised passes even when it is wrong

本文关键字:过去 错了 承诺      更新时间:2023-09-26
const chaiAsPromised = require('chai-as-promised');
const chai = require('chai');
const expect = chai.expect;
chai.use(chaiAsPromised);
describe('[sample unit]', function() {
  it('should pass functionToTest with true input', function() {   
    expect(Promise.resolve({ foo: "bar" })).to.eventually.have.property("meh");
  });
});

此测试通过???我正在使用"chai":"3.5.0","chai-as-promised":"5.2.0",

expect(...)返回一个承诺本身,该承诺将被解析或拒绝,具体取决于测试。

为了让 Mocha 测试

该承诺的结果,您需要从测试用例中显式返回它(这有效是因为 Mocha 具有内置的承诺支持(:

describe('[sample unit]', function() {
  it('should pass functionToTest with true input', function() {   
    return expect(Promise.resolve({ foo: "bar" })).to.eventually.have.property("meh");
  });
});

或者,您可以使用 Mocha 的"常规"回调式异步设置和 chai-as-promise 的.notify()

describe('[sample unit]', function() {
  it('should pass functionToTest with true input', function(done) {   
    expect(Promise.resolve({ foo: "bar" })).to.eventually.have.property("meh").notify(done);
  });
});