Возможно ли использовать тестовый блок в рельсах 4?

После обновления с Rails 3.2 до Rails 4 мое приложение работает, но мои тесты, написанные с помощью тестового блока, являются катастрофой.

По слухам, Minitest "совместим" с тестовым блоком. Однако, если я попытаюсь использовать (в настоящее время в комплекте) Minitest, есть множество различий - от имен и параметров утверждения assert *, чтобы (явно) многое другое делало как большие, так и тонкие.

Если я вместо этого попытаюсь избежать Minitest и попытаюсь сохранить драгоценный камень тестового блока в моем Gemfile, рейк-тест взрывается, говоря:

undefined method 'refute_predicate' for class 'ActiveSupport::TestCase'

Это вызвано вызовом

require 'rails/test_help'

:(

Я искал какое-то время, но еще не понял, как продолжить использование тестового блока. Единственной альтернативой может быть (для нас, массивный) рефакторинг нашего тестового кода, поскольку примерно 80% наших тестов каким-то образом нарушаются несовместимостью Minitest с тестовым блоком.

Но чтение, т.е. http://weblog.rubyonrails.org/2013/6/25/Rails-4-0-final/ и http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-3-2-to-rails-4-0 Я не нахожу никакого упоминания об этом по существу - я чувствую, что мне что-то не хватает.

Можно ли сделать Minitest более совместимым с тестовым блоком на систематической основе? Или продолжить использование тестового блока в Rails 4?

Ответ 1

Вы подклассы: Test:: Unit:: TestCase, а не ActiveSupport:: TestCase?

Возможно, попробуйте добавить minitest_tu_shim в свою тестовую группу:

https://github.com/seattlerb/minitest_tu_shim

или убедитесь, что подкласс ActiveSupport:: TestCase

Ответ 2

Да Поддержка Rails Test:: Unit. Вот руководство для него.

http://guides.rubyonrails.org/testing.html

Используйте глобальный поиск и замените в своих тестовых случаях, чтобы изменить имена методов.

Вот тест интеграции:

class UserFlowsTest < ActionDispatch::IntegrationTest

Вот тест контроллера:

class UsersControllerTest < ActionController::TestCase

Попробуйте rails new app скопировать автоматически созданные помощники и файлы фреймворка и посмотреть примеры.