Я хочу добавить пользовательское утверждение/метод следующим образом:
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
не разрешает это обещание с помощью eventually
, прежде чем передать его convertToStringEqual
.
Как я могу получить chai-as-promised
ожидание этого промиса, прежде чем передать его моему пользовательскому методу утверждения?
Сначала загрузите свой собственный плагин, а затем добавьте файл chai-as-promise
. Относится к порядку загрузки плагинов.
Обратите внимание при использовании других плагинов Chai: Chai as Promised находит все зарегистрированные в настоящее время ассертеры и обещает их во время установки. Таким образом, вы должны установить Chai as Promised в последнюю очередь после любых других плагинов Chai, если вы ожидаете, что их ассертеры будут промисифицированы.
Например.
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();
О, проблема, с которой я столкнулся, заключалась в том, что я запускал chai.use(function....) в каждом тесте, который у меня был, когда его нужно было установить только один раз.
Хм, клянусь, я делал это в таком порядке раньше, но я думаю, что нет! Спасибо за помощь, теперь работает отлично!