1

每当我的 Rails 应用程序的相关文件之一发生更改时,我都希望自动测试以运行 Steak 验收测试。在研究了 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

第一个有效:每当 Steak 规格发生变化时,它就会再次运行。

但第二个和第三个没有。更改 /app 子目录下的任何源文件都会被忽略。

使这些映射起作用的正确方法是什么?

谢谢奥利弗

4

2 回答 2

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

于 2010-08-28T17:50:00.467 回答
0

对于 RSpec 1.3:

我不得不使用 :post_initialize 钩子,因为内置的 RSpec 支持从清除所有现有映射开始。所以它清除了这些,然后添加了默认的 RSpec 映射。但是使用 :post_initialize 钩子(而不是第一行的 :initialize )修复了它。

我还必须将所有这些都放在 autotest/discover.rb 而不是 .autotest 中。

于 2011-10-07T17:49:58.950 回答