Javascript 按照承诺使用自定义chai方法断言与chai
我想添加如下自定义断言/方法:Javascript 按照承诺使用自定义chai方法断言与chai,javascript,testing,mocha.js,chai,chai-as-promised,Javascript,Testing,Mocha.js,Chai,Chai As Promised,我想添加如下自定义断言/方法: chai.use(函数(chai,utils){ var-Assertion=chai.Assertion; addMethod(“ConvertToString Qual”,函数(输入){ 新断言(this.u obj.toString()).to.equal(input.toString()); }); }); 但是,我希望能够按照承诺将其与chai一起使用,如下所示: Promise.resolve(2+2).should.finally.convertt
chai.use(函数(chai,utils){
var-Assertion=chai.Assertion;
addMethod(“ConvertToString Qual”,函数(输入){
新断言(this.u obj.toString()).to.equal(input.toString());
});
});
但是,我希望能够按照承诺将其与chai一起使用
,如下所示:
Promise.resolve(2+2).should.finally.converttoString(4)代码>
但当我运行此示例时,我看到以下错误:
AssertionError:预期“[对象承诺]”等于“4”
这是因为chai作为承诺
在传递给convertToStringEqual
之前,没有最终用解决该承诺
我如何才能获得承诺的chai
在将其传递给我的自定义断言方法之前等待该承诺?首先加载自定义插件,然后添加承诺的chai
。与加载插件的顺序相关
从
使用其他Chai插件时请注意:Chai将在安装时找到所有当前注册的资产,并向其承诺因此,如果您希望他们的Asserter得到认可,您应该按照上次承诺的那样,在任何其他Chai插件之后安装Chai
例如
const chai=require('chai');
const chaiasprowed=require('chai-as-assowed');
柴。用途(功能(柴,UTIL){
var-Assertion=chai.Assertion;
Assertion.addMethod('convertToStringEqual',函数(输入){
新断言(this.u obj.toString()).to.equal(input.toString());
});
});
柴。使用(柴);
chai.should();
描述('65418901',()=>{
它('应该通过',()=>{
返回承诺。解决(2+2)。应该。最终。转换为字符串质量(4);
});
});
单元测试结果:
65418901
✓ should pass
1 passing (52ms)
但是,像这样加载插件将不起作用:
chai.use(chaias);
柴。用途(功能(柴,UTIL){
var-Assertion=chai.Assertion;
Assertion.addMethod('convertToStringEqual',函数(输入){
新断言(this.u obj.toString()).to.equal(input.toString());
});
});
chai.should();
嗯,我发誓我之前是按这个顺序做的,但我想不是!谢谢你的帮助,现在工作得很好!哦,我遇到的问题是我在运行chai.use(function…)在我的每个测试中,当它只需要设置一次时。