Возможно ли использовать тестовый блок в рельсах 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
скопировать автоматически созданные помощники и файлы фреймворка и посмотреть примеры.