2013-09-19 4 views
10

Я использую Ruby 2 и Rails 4. У меня есть папка test/lib, где расположены несколько тестов. Но пробег rake test не использует их. Выполняются только другие тесты (модели, контроллеры, ...).Rails и MiniTest: добавить дополнительную папку

Где я могу добавить папку lib?

Я уже пробовал MiniTest::Rails::Testing.default_tasks << 'lib', но получаю NameError Exception: uninitialized constant MiniTest::Rails. Я не добавлял миниатюрный камень в свой Gemfile, потому что Ruby 2 использует его по умолчанию.

+0

вы можете переопределить задачи 'грабель test' в' Rakefile' пути создания новой задачи с выполнением 'рубин -Ilib: тест«тест/Библиотека/*» –

+4

Самым простым решением для меня является использование' грабель test: all' вместо 'rake test' – Bjoernsen

+0

Для Rails 4.2' rake test: all' устарел и будет удален в Rails 5. Но 'rake test' теперь работает точно так же. – Bjoernsen

ответ

13

Чтобы использовать MiniTest::Rails::Testing.default_tasks << 'lib', вам необходимо добавить драгоценный камень minitest-rails в ваш Gemfile. Он отделен от Minitest и добавляет, что многие функции Minitest отсутствуют, которые по умолчанию не включены в Rails. И minitest-rails добавляет другие функции, такие как создание рейк-задач для всех каталогов, которые имеют тесты. Таким образом, без каких-либо изменений в вашей 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».

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 } 
+0

Спасибо за это! Я думаю, вы имеете в виду «добавьте следующее в свой Rakefile», но не Gemfile. – notruthless

+0

Да. Спасибо за исправление. – blowmage

+1

на рельсах 4 это добавляет 3 секунды для загрузки, просто для пустого теста/lib dir – Krut

Смежные вопросы