问题
I use Ruby 2 and Rails 4. I have a folder test/lib
, where a few tests are located.
But running rake test
does not use them. Only the other tests (models, controllers, ...) are running.
Where do I have to add the lib
folder?
I already tried MiniTest::Rails::Testing.default_tasks << 'lib'
, but I get NameError Exception: uninitialized constant MiniTest::Rails
. I did not add the minitest gem to my Gemfile, because Ruby 2 uses it by default.
回答1:
To use MiniTest::Rails::Testing.default_tasks << 'lib'
you need to add the minitest-rails gem to your Gemfile. It is separate from Minitest and adds enables many Minitest features missing that are not enabled in Rails by default. And minitest-rails adds other features, such as creating rake tasks for all the directories that have tests. So without any changes to your Rakefile you can run things like this:
$ rake minitest:lib
Alternatively, to do this the old fashioned way, you can add the following to your 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 }
This assumes you want to run your lib tests without using any database fixtures. If you want the fixtures and database transactions, then you should create the rake task with a dependency on "test:prepare".
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 }
来源:https://stackoverflow.com/questions/18894060/rails-and-minitest-add-additional-folder