Запустите все тесты моделей, используя задачу rake

Попытка использовать грабли для запуска только тестов в каталоге test/models. Используя минитест.

У меня есть грабли, которые будут запускать все тесты

  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, чтобы он запускал этот тест вместо default: test?

2 ответа

Решение

Шаблон, который вы ищете, это "test/models/**/*_test.rb". "**" также будет соответствовать подкаталогам.

Если вы используете minitest-rails, у вас есть много задач, добавленных для вас. Для запуска всех тестов модели выполните:

rake minitest:models

Чтобы увидеть все созданные для вас задачи, выполните:

rake -T

Как обычно, ответ был довольно прост. Просто немного покопался. Убедитесь, что у вас есть следующее в вашем 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 

Тогда у вас есть доступ к встроенным в мини-наборы команд. Тот, который я искал, так же прост

rake minitest:models

Booya!

Другие вопросы по тегам