如何为 chai expect 提供用于 mocha 单元测试的自定义错误消息?
How to provide chai expect with custom error message for mocha unit test?
我使用 chai 的 expect 进行了 mocha 测试:
it("should parse sails out of cache file", async () => {
const sailExtractor = new Extractor();
const result = await sailExtractor.extract("test.xml");
try {
expect(result.length).to.be.greaterThan(0);
const withMandatoryFlight = result.filter((cruises) => {
return cruises.hasMandatoryFlight === true;
});
expect(withMandatoryFlight.length).to.be.greaterThan(0);
const cruiseOnly = result.filter((cruises) => {
return cruises.hasMandatoryFlight === false;
});
expect(cruiseOnly.length).to.be.greaterThan(0);
return Promise.resolve();
} catch (e) {
return Promise.reject(e);
}
}
现在,如果一个 to.be.greaterThan(0)
期望失败,mocha 上的错误输出对开发人员不友好:
AssertionError: expected 0 to be above 0
at Assertion.assertAbove (node_modules/chai/lib/chai/core/assertions.js:571:12)
at Assertion.ctx.(anonymous function) [as greaterThan] (node_modules/chai/lib/chai/utils/addMethod.js:41:25)
at _callee2$ (tests/unit/operator/croisiEurope/CroisXmlExtractorTest.js:409:61)
at tryCatch (node_modules/regenerator-runtime/runtime.js:65:40)
at Generator.invoke [as _invoke] (node_modules/regenerator-runtime/runtime.js:303:22)
at Generator.prototype.(anonymous function) [as next] (node_modules/regenerator-runtime/runtime.js:117:21)
at fulfilled (node_modules/tslib/tslib.js:93:62)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)
我想用更人性化的东西代替它。有没有办法告诉 chai 使用自定义错误消息?
我希望能够像这个伪代码一样使用它:
expect(result.length)
.to.be.greaterThan(0)
.withErrorMessage("It should parse at least one sail out of the flatfile, but result is empty");
然后失败的 mocha 错误应该打印:
AssertionError: It should parse at least one sail out of the flatfile, but result is empty
如果您使用 should
作为您的断言,您可以将一个字符串传递给测试函数,如果条件失败,该字符串将被写出。例如:
result.length.should.be.above(0, "It should parse at least one sail out of the flatfile, but result is empty");
我不确定 expect 是否可行。 API好像没提
每个 expect
方法接受一个可选参数 message
:
expect(1).to.be.above(2, 'nooo why fail??');
expect(1, 'nooo why fail??').to.be.above(2);
因此,在您的情况下应该是:
expect(result.length)
.to.be.greaterThan(0, "It should parse at least one sail out of the flatfile, but result is empty");
我使用 chai 的 expect 进行了 mocha 测试:
it("should parse sails out of cache file", async () => {
const sailExtractor = new Extractor();
const result = await sailExtractor.extract("test.xml");
try {
expect(result.length).to.be.greaterThan(0);
const withMandatoryFlight = result.filter((cruises) => {
return cruises.hasMandatoryFlight === true;
});
expect(withMandatoryFlight.length).to.be.greaterThan(0);
const cruiseOnly = result.filter((cruises) => {
return cruises.hasMandatoryFlight === false;
});
expect(cruiseOnly.length).to.be.greaterThan(0);
return Promise.resolve();
} catch (e) {
return Promise.reject(e);
}
}
现在,如果一个 to.be.greaterThan(0)
期望失败,mocha 上的错误输出对开发人员不友好:
AssertionError: expected 0 to be above 0
at Assertion.assertAbove (node_modules/chai/lib/chai/core/assertions.js:571:12)
at Assertion.ctx.(anonymous function) [as greaterThan] (node_modules/chai/lib/chai/utils/addMethod.js:41:25)
at _callee2$ (tests/unit/operator/croisiEurope/CroisXmlExtractorTest.js:409:61)
at tryCatch (node_modules/regenerator-runtime/runtime.js:65:40)
at Generator.invoke [as _invoke] (node_modules/regenerator-runtime/runtime.js:303:22)
at Generator.prototype.(anonymous function) [as next] (node_modules/regenerator-runtime/runtime.js:117:21)
at fulfilled (node_modules/tslib/tslib.js:93:62)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)
我想用更人性化的东西代替它。有没有办法告诉 chai 使用自定义错误消息?
我希望能够像这个伪代码一样使用它:
expect(result.length)
.to.be.greaterThan(0)
.withErrorMessage("It should parse at least one sail out of the flatfile, but result is empty");
然后失败的 mocha 错误应该打印:
AssertionError: It should parse at least one sail out of the flatfile, but result is empty
如果您使用 should
作为您的断言,您可以将一个字符串传递给测试函数,如果条件失败,该字符串将被写出。例如:
result.length.should.be.above(0, "It should parse at least one sail out of the flatfile, but result is empty");
我不确定 expect 是否可行。 API好像没提
每个 expect
方法接受一个可选参数 message
:
expect(1).to.be.above(2, 'nooo why fail??');
expect(1, 'nooo why fail??').to.be.above(2);
因此,在您的情况下应该是:
expect(result.length)
.to.be.greaterThan(0, "It should parse at least one sail out of the flatfile, but result is empty");