我在我们的大型代码库中发现了许多规范(有些甚至是我的 :),它们忘记包含.should
并在没有测试任何东西时通过了。
例如
describe FooController, behavior_type: :controller do
before do
post :create, foo: { bar: 100 }
end
it "doesn't really test anything"
response.body == "{\"result\":\"excellent\"}"
end
end
无论 的内容如何,该规范都将通过,response.body
因为没有使用 RSpec 匹配器。
我的问题是:是否有 RSpec 选项或 gem 或其他东西可以检测规范何时完成而无需使用任何 RSpec 匹配器,也无需调用pending
并引发错误或将规范标记为失败或其他状态以提醒开发人员注意这一事实规范没有做他们可能认为的那样?
一个后续问题是:这不应该是 RSpec 的默认行为吗?是否存在您希望能够编写不使用匹配器且不调用的规范的用例pending
?
FWIW:我知道 RSpec 有一个--warnings
选项,它可能会或可能不会打印有关此类场景的警告。在实践中,尽管对于我们的主要项目,它会打印数千行不相关的警告,其中许多是关于第三方 gem 等的。