与推特中的 waloeiii 相同的问题:
一切都变绿后,如何让 autospec/test 不运行完整的测试套件?我写的下一个测试将是红色的!
我宁愿手动运行完整的测试套件。
顺便说一句,我尝试添加一个失败的规范:
it "should flunk" do
flunk
end
但是当感觉像它时,autospec 似乎会忽略它。
与推特中的 waloeiii 相同的问题:
一切都变绿后,如何让 autospec/test 不运行完整的测试套件?我写的下一个测试将是红色的!
我宁愿手动运行完整的测试套件。
顺便说一句,我尝试添加一个失败的规范:
it "should flunk" do
flunk
end
但是当感觉像它时,autospec 似乎会忽略它。
您确定您对自动测试启发式的预期行为不感到困惑吗?
我的理解是,它会针对已更改的内容运行测试,并将继续运行失败的测试,直到它们通过,然后一旦通过,它就会运行整个测试套件以确保没有其他问题发生。
实际上,它是保守的,并确保您没有引入破坏其他不相关测试的副作用,这可能是一件好事。当然,问题在于,如果您正在执行快速的红绿循环,您将大量运行您的全套套件。
如果你想改变这些行为,你需要编辑rails_autotest.rb
zentest 文件中的启发式。
您可以使用以下选项来避免这种行为 -
autospec --no-full-after-failed
有点晚了,但我也在寻找这个,所以我想我会发布我的解决方案:
将以下内容添加到 ~/.autotest:
class Autotest
def rerun_all_tests
end
end
我认为这是设计使然——如果你修复了失败的规范,并且该部分中的所有其他规范都是绿色的,那么 autospec 将重新运行整个套件——这将告诉你应用到项目某个区域的修复是否失败另一个与否。
如果您只想随时运行您正在处理的规范,那么您可以从命令行执行此操作:
ruby spec/controllers/my_spec.rb
或从 Textmate 中按您的规范文件中的 cmd+r。无论如何,您都应该重新运行整个套件,否则您可能会错过失败的规范。