如何告诉自动测试正确跟踪应用程序源中的更改?
我希望每当我的某个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
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
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子目录下的任何源文件都会被忽略。
什么是让这些映射工作的正确方法?
谢谢奥利弗
我刚刚更改了我的.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
这是有效的,但我不知道在其他人之前调用验收测试的附带效果( add_mapping
上的true
标志)
对于RSpec 1.3:
我不得不使用:post_initialize钩子,因为内置的RSpec支持从清除所有现有的映射开始。 所以它正在清除这些,然后添加默认的RSpec映射。 但是使用:post_initialize钩子(而不是:在第一行初始化)修复它。
我还必须将所有这些放在autotest / discover.rb而不是.autotest中。