如果规范没有应该/期望等,我怎么能让Rspec自动失败

时间:2014-01-07 01:49:03

标签: rspec false-positive

我在我们的大型代码库中找到了许多规范(有些甚至是我的:)忘记包含.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选项,可能会也可能不会打印关于此类情况的警告。在实践中,虽然我们的主要项目打印了数千行不相关的警告,其中许多是关于第三方宝石等。

1 个答案:

答案 0 :(得分:1)

没有RSpec选项或gem,但https://github.com/rspec/rspec-core/issues/759https://github.com/rspec/rspec-core/issues/404https://github.com/rspec/rspec-core/issues/740中描述的技术可以自行完成。

至于这是默认行为,RSpec团队的当前和过去的领导者在上述问题主题中反对它。

请参阅问题404以了解不希望失败的用例。