亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用帶有 chai-as-promised 的自定義 chai 方法斷言

使用帶有 chai-as-promised 的自定義 chai 方法斷言

我想添加一個自定義斷言/方法,如下所示: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沒有解決該承諾。eventuallyconvertToStringEqualchai-as-promised在將承諾傳遞給我的自定義斷言方法之前,如何等待該承諾?
查看完整描述

1 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

首先加載您的自定義插件,然后添加chai-as-promise.?與加載插件的順序有關。

來自#installation-and-setup

使用其他 Chai 插件時請注意:Chai as Promised 會在安裝時查找所有當前注冊的斷言器并承諾它們。因此,如果您希望其斷言器被 Promisified,則應在任何其他 Chai 插件之后將 Chai 安裝為 Promised last 。

例如

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();


查看完整回答
反對 回復 2024-01-18
  • 1 回答
  • 0 關注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號