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…)在我的每个测试中,当它只需要设置一次时。