我有一類,那就是一些其他類的基礎,專業的行爲:測試簡單STI與FactoryGirl
class Task < ActiveRecord::Base
attr_accessible :type, :name, :command
validates_presence_of :type, :name, :command
# some methods I would like to test
end
類CounterTask從任務
繼承class CounterTask < Task
end
這一切工作很好,直到我試圖測試基類,因爲它必須有一個類型。
FactoryGirl.define do
factory :task do
sequence(:name) { |n| "name_#{n}" }
sequence(:command) { |n| "command_#{n}" }
end
end
您將如何測試超類的基本功能?
不應該寫你的測試,以便它測試的功能,而不是實施?在這種情況下,這意味着你會測試'CounterTask'是否具有從'Task'獲得的屬性和其他東西。如果你改變你的實現,例如不再使用STI。如果您的CounterTask保持相同的行爲,您的測試仍然可以成功。 – Arjan
這是一個很好的觀點。我只是認爲如果我首先測試基本功能,然後測試子類,我會在測試中保存一些重複內容......也許這可能是我的問題的解決方案。 – Mark