每当我的某个rails应用程序的相关文件发生变化时,我想获得自动测试以运行牛排验收测试。在研究了Rspec和Cucumber自己的自动测试配置后,我正在尝试以下映射:
Autotest.add_hook :initialize do |at|
at.add_mapping(%r%^spec/acceptance/.*_spec.rb$%, true) { |filename, _|
filename
}
at.add_mapping(%r%^app/(models|controllers|helpers|lib)/.rb$%) {
at.files_matching %r%^spec/acceptance/._spec.rb$%
}
at.add_mapping(%r%^app/views/(.*)/.rb$%) {
at.files_matching %r%^spec/acceptance/._spec.rb$%
}
end
第一个可行:每当牛排规格改变时,它就会再次运行。
但第二个和第三个没有。更改/ app子目录下的任何源文件都会被忽略。
使这些映射正常工作的正确方法是什么?
感谢 奥利弗
答案 0 :(得分:3)
我刚刚更改了.autotest
文件以添加:
Autotest.add_hook :initialize do |at|
at.add_mapping(%r%^spec/acceptance/.*_spec.rb$%, true) { |filename, _|
filename
}
at.add_mapping(%r%^app/(models|controllers|helpers|lib)/.*rb$%, true) {
at.files_matching %r%^spec/acceptance/.*_spec.rb$%
}
at.add_mapping(%r%^app/views/(.*)$%, true) {
at.files_matching %r%^spec/acceptance/.*_spec.rb$%
}
end
这是有效的,但我不知道在其他人之前调用验收测试的附带影响(true
上的add_mapping
标志)
答案 1 :(得分:0)
对于RSpec 1.3:
我不得不使用:post_initialize钩子,因为内置的RSpec支持从清除所有现有的映射开始。所以它正在清除这些,然后添加默认的RSpec映射。但是使用:post_initialize钩子(而不是:在第一行初始化)修复它。
我还必须把所有这些都放在autotest / discover.rb而不是.autotest。