Rails扩展`rake test`以包含自定义行为

时间:2014-08-06 16:20:27

标签: ruby-on-rails ruby rake rake-test

我在test/policies中收到了大量文件,并且我试图像这样强化rake test

# lib/tasks/test.rake
namespace :test do
  desc "Test Pundit policies"
  Rake::TestTask.new(:policies) do |t|
    t.libs << 'test'
    t.pattern = 'test/policies/*_test.rb'
  end 
end

Rake::Task["test"].enhance do
  Rake::Task["test:policies"].invoke
end

如果我运行bin/rake test:all bin/rake test现在只运行策略测试,而我的其他人都没有。

有谁能告诉我这里做错了什么?如果不清楚,我希望rake test运行我所有的测试,就像以前一样。

更新

实际上,它现在正在运行,但我注意到我的功能,单元和集成测试现在都在运行,但前提是政策测试全部通过。如果任何策略测试失败,那么我的测试套件的其余部分将无法运行。

我不喜欢输出,请注意下面有两个测试输出块:

[vagrant@vagrant-centos-6-4 vagrant]$ bin/rake test
Run options: --seed 54880

# Running:

.........................

Finished in 0.584530s, 42.7694 runs/s, 56.4556 assertions/s.


25 runs, 33 assertions, 0 failures, 0 errors, 0 skips
Run options: --seed 19900

# Running:

.........................................................

Finished in 4.132299s, 51.0612 runs/s, 128.9839 assertions/s.

我更喜欢将策略测试输出合并到与其他测试相同的输出块中。任何想法,或者它是否会得到它的好处?

1 个答案:

答案 0 :(得分:2)

有人问the same question,我为他们回答了这个问题。我的解决方案是改变我的代码:

Rake::TestTask.new(:policies) do |t|

为:

Rails::TestTask.new(:policies) do |t|

它只是有效,并修复了我遇到的所有问题。