Rails расширяет `rake test` для включения пользовательского поведения

У меня есть куча файлов в test/policiesи я попытался улучшить rake test вот так:

# lib/tasks/test.rake
namespace :test do
  desc "Test Pundit policies"
  Rake::TestTask.new(:policies) do |t|
    t.libs << 'test'
    t.pattern = 'test/policies/*_test.rb'
  end 
end

Rake::Task["test"].enhance do
  Rake::Task["test:policies"].invoke
end

Это отлично работает, если я бегу bin/rake test:allно bin/rake test сейчас только проходит тестирование политик, и ни один из моих других.

Кто-нибудь может посоветовать, что я здесь делаю не так? Если не понятно, хочу rake test чтобы выполнить все мои тесты, как раньше.

ОБНОВИТЬ

На самом деле, сейчас это работает, но я заметил, что мои функциональные, модульные и интеграционные тесты выполняются сейчас, но только если все тесты политики пройдены. Если какой-либо из тестов политики не пройден, остальная часть моего набора тестов не будет работать.

И мне не нравится вывод, обратите внимание, как есть два блока тестового вывода ниже:

[vagrant@vagrant-centos-6-4 vagrant]$ bin/rake test
Run options: --seed 54880

# Running:

.........................

Finished in 0.584530s, 42.7694 runs/s, 56.4556 assertions/s.


25 runs, 33 assertions, 0 failures, 0 errors, 0 skips
Run options: --seed 19900

# Running:

.........................................................

Finished in 4.132299s, 51.0612 runs/s, 128.9839 assertions/s.

Я бы предпочел, чтобы выходные данные тестов политики были объединены в тот же блок вывода, что и другие мои тесты. Любые идеи, или это так хорошо, как это получится?

1 ответ

Решение

Кто-то задал тот же вопрос, и я ответил на него. Решение в моем случае состояло в том, чтобы изменить мой код с:

Rake::TestTask.new(:policies) do |t|

чтобы:

Rails::TestTask.new(:policies) do |t|

Это просто работает, и исправляет все проблемы, которые у меня были.

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