2

尝试使用 rake 任务仅在 test/models 目录中运行测试。使用微测。

我有一个将运行所有测试的 rake 任务

  require "rake/testtask"

  Rake::TestTask.new(:test => "db:test:prepare") do |t| 
    t.libs << "test"
    t.pattern = "test/**/*_test.rb"
 end

 task :default => :test

然后,运行“rake”会达到默认值并运行所有测试。我想编写第二个 rake 任务,它只会在模型目录(test/models/)中运行测试。

我通过简单地更改来玩弄这个现有的 TestTask

t.pattern = "test/**/*_test.rb"

t.pattern = "test/models/*_test.rb"

但是,它似乎仍在运行所有测试......不仅仅是模型。奇怪的?

问题

我怎样才能做到这一点?我如何需要命名第二个仅运行模型的 TestTask,以及如何告诉 rake 运行该测试而不是默认的 :test?

4

2 回答 2

3

您正在寻找的模式是“test/models/**/*_test.rb”。“**”也将匹配子目录。

如果您使用的是 minitest-rails,那么您会为您添加很多任务。要运行所有模型测试,请运行:

rake minitest:models

要查看为您创建的所有 rake 任务,请运行:

rake -T
于 2013-04-06T12:29:52.993 回答
0

像往常一样,答案很简单。只是稍微挖掘了一下。确保您的 application.rb 中有以下内容(在模块内)。

config.generators do |g|
    g.fixture_replacement :factory_girl # if your using factory_girl
    g.test_framework :mini_test, :spec => true, :fixture => false
end 

然后,您可以访问内置命令的 minitests。我要找的那个很简单

rake minitest:models

啵啵!

于 2013-04-06T07:09:44.483 回答