如何设置RSpec以最后测试功能,并且仅在所有其他测试通过时
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置RSpec以最后测试功能,并且仅在所有其他测试通过时相关的知识,希望对你有一定的参考价值。
像许多非greenfeild项目一样,我到达了我的新工作,发现大多数测试都是使用功能规格而不是控制器/型号规格来执行的。当然,这意味着测试需要很长时间才能执行。
有没有办法我可以设置RSpec,以便我的功能测试最后运行 - 并且它们只会在所有其他测试首次成功时运行。我正在将应用程序迁移到控制器测试以加速执行,但如果模型验证存在问题或者我的某个控制器被破坏,则无需等待15分钟即可完成功能测试。
我想做什么?
(我现在在RubyMine中运行测试;但如果需要,我可以移动到rake spec
)。
答案
虽然我自己并没有真正尝试过,但通过阅读文档看来它可以做你想做的事情。
将以下内容添加到spec_helper.rb以覆盖全局排序并强制rspec在首次失败时失败。
RSpec.configure do |config|
config.register_ordering :global do |examples|
feature, other = examples.partition do |example|
example.metadata[:type] == :feature
end
other + feature
end
config.fail_fast = true
end
以上是关于如何设置RSpec以最后测试功能,并且仅在所有其他测试通过时的主要内容,如果未能解决你的问题,请参考以下文章
Rspec: everyday-rspec实操: 第10章测试其他功能,第11章TDD
在 Rails 的 rspec 中,我如何编写/编辑我的测试文件,以便特定上下文中的示例以设定的顺序运行?
如何测试 RSpec 中的 attr_accessible 字段