我在我们的大型代码库中找到了许多规范(有些甚至是我的:)忘记包含.should
并在他们没有测试任何内容时通过。
e.g。
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
选项,可能会也可能不会打印关于此类情况的警告。在实践中,虽然我们的主要项目打印了数千行不相关的警告,其中许多是关于第三方宝石等。
答案 0 :(得分:1)
没有RSpec选项或gem,但https://github.com/rspec/rspec-core/issues/759,https://github.com/rspec/rspec-core/issues/404和https://github.com/rspec/rspec-core/issues/740中描述的技术可以自行完成。
至于这是默认行为,RSpec团队的当前和过去的领导者在上述问题主题中反对它。
请参阅问题404以了解不希望失败的用例。