У меня есть несколько моделей, которые используют STI, и я хотел бы использовать один и тот же модульный тест для тестирования каждой модели. Например, у меня есть:
class RegularList < List
class OtherList < List
class ListTest < ActiveSupport::TestCase
fixtures :lists
def test_word_count
list = lists(:regular_list)
assert_equal(0, list.count)
end
end
Как мне использовать тест test_word_count для модели OtherList. Тест намного дольше, поэтому я бы предпочел не перепечатывать его для каждой модели. Спасибо.
РЕДАКТИРОВАТЬ: Я пытаюсь использовать миксин в соответствии с предложением Рэнди. Это то, что у меня есть, но я получаю сообщение об ошибке: «В объекте не пропущена постоянная ListTestMethods! (ArgumentError)»:
в lib / list_test_methods.rb:
module ListTestMethods
fixtures :lists
def test_word_count
...
end
end
в normal_list_test.rb:
require File.dirname(__FILE__) + '/../test_helper'
class RegularListTest < ActiveSupport::TestCase
include ListTestMethods
protected
def list_type
return :regular_list
end
end
РЕДАКТИРОВАТЬ: Кажется, все работает, если я помещаю вызов фикстуры в RegularListTest и удаляю его из модуля.