我在让 Guard 在我的 Rails 3.2 项目中运行时遇到问题。我的测试文件夹看起来像默认的 rails 测试结构:
▾ test/
▾ fixtures/
customers.yml
▾ functional/
▾ integration/
▾ performance/
browsing_test.rb
▾ unit/
customer_test.rb
test_helper.rb
我的 Guardfile 看起来像这样:
guard 'minitest' do
# with Minitest::Unit
watch(%r|^test/(.*)\/?test_(.*)\.rb|)
watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "test/#{m[1]}test_#{m[2]}.rb" }
watch(%r|^test/test_helper\.rb|) { "test" }
# with Minitest::Spec
watch(%r|^spec/(.*)_spec\.rb|)
watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
watch(%r|^spec/spec_helper\.rb|) { "spec" }
# Rails 3.2
watch(%r|^app/controllers/(.*)\.rb|) { |m| "test/controllers/#{m[1]}_test.rb" }
watch(%r|^app/helpers/(.*)\.rb|) { |m| "test/helpers/#{m[1]}_test.rb" }
watch(%r|^app/models/(.*)\.rb|) { |m| "test/unit/#{m[1]}_test.rb" }
# Rails
# watch(%r|^app/controllers/(.*)\.rb|) { |m| "test/functional/#{m[1]}_test.rb" }
# watch(%r|^app/helpers/(.*)\.rb|) { |m| "test/helpers/#{m[1]}_test.rb" }
# watch(%r|^app/models/(.*)\.rb|) { |m| "test/unit/#{m[1]}_test.rb" }
end
但是在运行警卫时,它只是说它正在监视,但实际上并没有运行 customer_test.rb 中的任何测试,即使我明确要求它运行迷你测试。如果我从命令行使用 运行测试ruby -Itest test/unit/customer_test.rb
,它们会按预期运行。我知道我在 Guardfile 配置中做错了什么,但它到底是什么?