Rspec 如果规范没有';I don’我没有一个应该/期望等

Rspec 如果规范没有';I don’我没有一个应该/期望等,rspec,false-positive,Rspec,False Positive,我在我们庞大的代码库中发现了许多规范(有些甚至是我的:),它们忘记了包含。should,并且在没有测试任何东西时通过了 e、 g 由于未使用RSpec匹配器,因此无论response.body的内容如何,此规范都将通过 我的问题是:是否有一个RSpec选项或gem或其他东西可以检测规范何时完成,而不使用任何RSpec匹配器,也不调用pending,并引发错误或标记规范失败或其他一些状态,以提醒开发人员规范没有做他们可能认为的事情 接下来的问题是:这不应该是RSpec的默认行为吗?是否有一个用例,

我在我们庞大的代码库中发现了许多规范(有些甚至是我的:),它们忘记了包含
。should
,并且在没有测试任何东西时通过了

e、 g

由于未使用RSpec匹配器,因此无论
response.body的内容如何,此规范都将通过

我的问题是:是否有一个RSpec选项或gem或其他东西可以检测规范何时完成,而不使用任何RSpec匹配器,也不调用
pending
,并引发错误或标记规范失败或其他一些状态,以提醒开发人员规范没有做他们可能认为的事情

接下来的问题是:这不应该是RSpec的默认行为吗?是否有一个用例,您希望能够编写不使用匹配器且不调用
挂起的规范


FWIW:我知道RSpec有一个
--warnings
选项,它可以打印或不打印关于类似场景的警告。但实际上,对于我们的主要项目,它打印了数千行不相关的警告,其中许多是关于第三方gem等的警告。

没有RSpec选项或gem,但中介绍了一些技术,您自己也可以这样做

至于这是默认行为,RSpec团队的现任和前任领导在前面提到的问题线程中对此表示反对


有关不希望失败的用例,请参阅问题404。

谢谢,尽管我更希望规范彻底失败。请注意,尽管您不能在将导致示例失败的
after
子句中设置期望值,但您可以在after子句中引发错误以导致示例失败。因此,您可以将引用代码中的
put
调用替换为
raise“no expectations set”
Re default behavior:所提出的用例基本上基于一个已经解决的bug(rspec/rspec expectations#59)。主要的障碍似乎是担心如何在不耦合子模块的情况下实现这一点。对于TDD/RSpec新手来说,我仍然更喜欢默认情况下安全的测试框架,而不是这两种东西。这也是我在简短阅读后得出的结论,但我不想在回答中“介入”。可以在github上随意“加入转换”。这个团队很棒,我认为他们非常乐于接受意见。
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