我想添加这样的自定义断言/方法:
chai.use(function (chai, utils) {
var Assertion = chai.Assertion;
Assertion.addMethod("convertToStringEqual", function (input) {
new Assertion(this._obj.toString()).to.equal(input.toString());
});
});但是,我希望能够像这样在chai-as-promised中使用它:
Promise.resolve(2 + 2).should.eventually.convertToStringEqual(4);
但是当我运行这个例子时,我看到了这个错误:
AssertionError: expected '[object Promise]' to equal '4'
这是因为chai-as-promised在将承诺传递给convertToStringEqual之前并没有用eventually来解决这个问题。
在将该承诺传递给我的自定义断言方法之前,我如何让chai-as-promised等待该承诺?
发布于 2020-12-23 08:37:02
首先加载您的自定义插件,然后添加chai-as-promise。与加载插件的顺序相关。
来自#安装和安装
注意:当使用其他柴氏插件时,正如承诺的那样,才能在安装时找到所有当前注册的断言器并对它们进行升级。因此,如果您希望的断言得到改进,那么您应该按照上一次的承诺,在任何其他柴氏插件之后安装柴氏。
例如。
const chai = require('chai');
const chaiAsPromised = require('chai-as-promised');
chai.use(function(chai, utils) {
var Assertion = chai.Assertion;
Assertion.addMethod('convertToStringEqual', function(input) {
new Assertion(this._obj.toString()).to.equal(input.toString());
});
});
chai.use(chaiAsPromised);
chai.should();
describe('65418901', () => {
it('should pass', () => {
return Promise.resolve(2 + 2).should.eventually.convertToStringEqual(4);
});
});单元测试结果:
65418901
✓ should pass
1 passing (52ms)但是,像这样加载插件是行不通的:
chai.use(chaiAsPromised);
chai.use(function(chai, utils) {
var Assertion = chai.Assertion;
Assertion.addMethod('convertToStringEqual', function(input) {
new Assertion(this._obj.toString()).to.equal(input.toString());
});
});
chai.should();https://stackoverflow.com/questions/65418901
复制相似问题