Rails和MiniTest:添加其他文件夹

我使用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默认使用它。

要使用MiniTest::Rails::Testing.default_tasks << 'lib'您需要将minitest-rails gem添加到Gemfile中。 它与Minitest分开,并且添加了默认情况下未在Rails中启用的许多Minitestfunction。 minitest-rails添加了其他function,例如为所有具有测试的目录创建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测试。 如果你想要fixtures和数据库事务,那么你应该创建一个依赖于“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 }