没有expect()的Jasmine测试将会成功。

3
我们在测试环境中使用jasmine。在实施测试时,常见的错误似乎是首先设置所有测试的前提条件,然后忘记实际调用expect。不幸的是,这样的测试将始终成功;你看不到测试实际上是有问题的。
在我看来,一个不期望任何东西的测试应该总是失败。有没有办法告诉jasmine采用这种行为?如果没有,是否有其他方法可以确保我的所有测试都实际上期望某些东西?

这就是为什么你需要先让你的测试失败。 :) - Yury Tarabanko
当然可以。但如果你很着急,这种情况很容易发生。 - digory doo
QUnit有这个功能。不确定Jasmine或Mocha是否具备此功能。 - Yury Tarabanko
根据 https://github.com/jasmine/jasmine/issues/1221 ,应该会有一个警告,但我找不到它。我也在寻找那个功能。 - André
2个回答

1
茉莉的文档(重点是我的)中引用:
默认情况下,Jasmine不要求规范包含任何期望。 您可以通过将“failSpecWithNoExpectations”选项设置为“true”来启用该行为:
- 如果您使用独立分发版,请将其添加到lib/jasmine-/boot.js中的config对象中。 - 如果您使用jasmine NPM包,请将其添加到配置文件中(通常是spec/support/jasmine.json)。 - 如果您使用包装jasmine-core的第三方工具,请查看该工具的文档以了解如何传递配置选项。 - 如果您直接使用jasmine-core,请将其添加到传递给Env#configure的对象中。
我们不建议依赖failSpecWithNoExpectations选项。 它只确保每个规范至少有一个期望,而不是如果要验证的行为不起作用,则规范实际上会因正确的原因而失败。 确保规范实际上是正确的唯一方法是尝试两种方式,并确保在测试代码正常工作时通过,在测试代码出现故障时以预期的方式失败。 很少有人可以在不尝试的情况下始终编写良好的规范,就像很少有人可以在不试用的情况下始终交付有效的非测试代码一样。

0

有一个 ESLint 插件 eslint-plugin-jasmine 可以确保测试至少有一个 expect() 调用,并且这些调用有匹配器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接