12

我使用 Ruby 2 和 Rails 4。我有一个文件夹test/lib,其中有一些测试。但跑步rake test并不使用它们。只有其他测试(模型、控制器等)正在运行。

我必须在哪里添加lib文件夹?

我已经尝试过了MiniTest::Rails::Testing.default_tasks << 'lib',但我得到了NameError Exception: uninitialized constant MiniTest::Rails。我没有将 minitest gem 添加到我的 Gemfile 中,因为 Ruby 2 默认使用它。

4

1 回答 1

13

要使用MiniTest::Rails::Testing.default_tasks << 'lib',您需要将minitest-rails gem 添加到您的 Gemfile。它与 Minitest 分开,并添加了许多在 Rails 中默认未启用的 Minitest 功能。minitest-rails 添加了其他功能,例如为所有具有测试的目录创建 rake 任务。因此,无需对您的 Rakefile 进行任何更改,您就可以运行如下操作:

$ rake minitest:lib

或者,要以老式方式执行此操作,您可以将以下内容添加到您的 Rakefile:

namespace :test do

  desc "Test lib source"
  Rake::TestTask.new(:lib) do |t|    
    t.libs << "test"
    t.pattern = 'test/lib/**/*_test.rb'
    t.verbose = true    
  end

end

Rake::Task[:test].enhance { Rake::Task["test:lib"].invoke }

这假设您想在不使用任何数据库设备的情况下运行您的 lib 测试。如果您想要夹具和数据库事务,那么您应该创建依赖于“test:prepare”的 rake 任务。

namespace :test do

  desc "Test lib source"
  Rake::TestTask.new(:lib => "test:prepare") do |t|    
    t.libs << "test"
    t.pattern = 'test/lib/**/*_test.rb'
    t.verbose = true    
  end

end

Rake::Task[:test].enhance { Rake::Task["test:lib"].invoke }
于 2013-10-01T22:40:11.077 回答