在Rails中使用Minitest设置Guard 3.2

时间:2013-02-06 08:17:42

标签: ruby ruby-on-rails-3.2 guard minitest

我遇到让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中运行任何测试,即使我明确要求它运行minitests。如果我使用ruby -Itest test/unit/customer_test.rb从命令行运行测试,它们将按预期运行。我知道我在Guardfile配置中做错了什么,但它究竟是什么?

1 个答案:

答案 0 :(得分:0)

关于run_all_on_start功能,目前这是Unreleased features for the v1.0.0的一部分。希望很快就能发布新的测试版。在此期间,您可以尝试使用以下的守卫 - minitest:

gem 'guard-minitest', github: 'guard/guard-minitest'

请在尝试主分支后向GitHub issue tracker报告任何问题,谢谢!