如何强制RSpec测试失败?

强制RSpec测试失败的正确方法是什么?

我正在考虑1.should==2,不过可能还有更好的

fail/raise会起作用(它们是彼此的别名)

范例

指定“此测试失败”是否执行
提出“这是我的失败信息”
终止

在以下情况下失败:

1)此测试失败
失败/错误:引发“这是我的失败消息”
运行时错误:
这是我的失败信息

替代品

如果您想在规范中使用 Ap/ />代码>失败/代码>,您应该考虑到可能有更明确的方式来编写您的期望。

此外,raise/fail不能很好地处理aggregate\u故障,因为异常会使块短路,并且不会运行任何后续匹配程序

将测试标记为挂起

如果需要将测试标记为挂起以确保返回测试,可以使用fail/raise,但也可以使用pending

#🚫 与此相反:
它“应该做点什么”去做
# ...
提出“这需要实施”
终止
# ✅ 试试这个:
它“应该做点什么”去做
待定“这需要实施”
终止

断言未调用块

如果您需要确保一个块没有被执行,请考虑使用收益率>代码>匹配器。例如:

描述“可枚举的”#有吗
# 🚫 与此相反:
它“如果集合为空,则不会向块屈服”do
有吗?{raise“它不应该调用此块”}
终止
# ✅ 试试这个:
它“如果集合为空,则不会向块屈服”do
期望{b |[]任何?(&b)}。不放弃控制权
终止
终止

发表评论