我有許多使用STI的模型,並且我想使用相同的單元測試來測試每個模型。例如,我有:對使用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
我該如何去使用OtherList模型的test_word_count測試。測試時間更長,所以我寧願不必爲每個模型重新輸入。謝謝。
編輯:我想按照蘭迪的建議使用混合。這是我,但我得到的錯誤: 「對象是不缺的不斷ListTestMethods(引發ArgumentError)」:
在LIB/list_test_methods.rb:
module ListTestMethods
fixtures :lists
def test_word_count
...
end
end
在regular_list_test.rb:
require File.dirname(__FILE__) + '/../test_helper'
class RegularListTest < ActiveSupport::TestCase
include ListTestMethods
protected
def list_type
return :regular_list
end
end
編輯:一切似乎工作,如果我把Fixtures調用RegularListTest並從模塊中刪除它。
啊,fixtures是test_helper.rb中的一個方法,所以你必須將它移動到每個測試類。我已在下面更新了我的答案。 – 2010-03-21 22:58:38