如何告诉自动测试正确跟踪应用源的变化?

时间:2010-06-04 14:26:55

标签: ruby-on-rails rspec autotest acceptance-testing

每当我的某个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子目录下的任何源文件都会被忽略。

使这些映射正常工作的正确方法是什么?

感谢 奥利弗

2 个答案:

答案 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。