如何使 Chai 打印断言的参数名称而不是它的值
How to make Chai print assertion's parameter name instead of it's value
我使用带有 Chai 的 Mocha 进行测试。当您在浏览器中用鼠标左键单击展开测试用例时,Mocha 会显示整个测试代码,但是当任何 Chai 的断言失败时,我会得到如下内容:
预期未定义存在
如果最初没有将文本描述作为第二个参数提供给断言,则很难找到这种情况。
有没有办法得到类似
的东西
预期 foo.bar 存在
P.S。我用的是webpack,所以断言的行号没有任何意义(通过webpack生成的文件可以找到,但是很难)。
Chai 没有您可以打开以获得您希望的那种报告的功能。在很多情况下,我发现 Chai 生成的库存消息不够准确,无法快速找到问题所在,因此我设置了自定义消息。例如:
it("should test promise throwing error", () => {
const foo;
expect(foo, "foo should exist").to.exist;
});
如果 expect(...).to.exist
和 "... should exist"
的冗余让您感到厌烦,您可以将消息缩短为描述性足以满足您需要的字符串:expect(foo, "foo").to.exist
。它并没有完全消除手动工作,但减少了它。
对于自动解决方案,您必须为 expect
编写一个包装器,它能够提取传递给它的参数的名称。这不是一项微不足道的任务。
我使用带有 Chai 的 Mocha 进行测试。当您在浏览器中用鼠标左键单击展开测试用例时,Mocha 会显示整个测试代码,但是当任何 Chai 的断言失败时,我会得到如下内容:
预期未定义存在
如果最初没有将文本描述作为第二个参数提供给断言,则很难找到这种情况。 有没有办法得到类似
的东西预期 foo.bar 存在
P.S。我用的是webpack,所以断言的行号没有任何意义(通过webpack生成的文件可以找到,但是很难)。
Chai 没有您可以打开以获得您希望的那种报告的功能。在很多情况下,我发现 Chai 生成的库存消息不够准确,无法快速找到问题所在,因此我设置了自定义消息。例如:
it("should test promise throwing error", () => {
const foo;
expect(foo, "foo should exist").to.exist;
});
如果 expect(...).to.exist
和 "... should exist"
的冗余让您感到厌烦,您可以将消息缩短为描述性足以满足您需要的字符串:expect(foo, "foo").to.exist
。它并没有完全消除手动工作,但减少了它。
对于自动解决方案,您必须为 expect
编写一个包装器,它能够提取传递给它的参数的名称。这不是一项微不足道的任务。