2013-03-13 73 views
1

我使用迷你測試來測試框架。我嘗試寫模型測試。使用minitest編寫模型方法測試

class Person 
    include Mongoid::Document 

    field :provider, type:String 
    field :user_id, type:String 
    field :name, type:String 

    def self.create_with_omniauth(auth) 
    create! do |person| 
     person.provider = auth["provider"] 
     person.user_id = auth["uid"] 
     #user.name = auth["info"]["name"] 
    end 
    end 

    def self.find_by_provider_and_uid(provider, uid) 
    where(provider: provider, user_id: uid).first 
    end 

end 

以上是我的模特。我想寫一個測試來控制人是否擁有「create_with_omniauth方法」。

我該怎麼寫這個測試。我等待你的想法?提前致謝。

回答

2

要完成此操作,您可以使用assert_respond_to

一個完整的例子:

class PersonTest < MiniTest::Unit::TestCase 
    def test_responds_to_create_with_omniauth 
    assert_respond_to(Person, :create_with_omniauth) 
    end 
end 

我個人的看法是,測試方法,而不是斷言它是否存在與否的行爲,但我會離開,給你。

+0

非常感謝。其實,我覺得你喜歡。但我的文字領導人想要所有的測試。另外,我想再問一個問題。我如何測試行爲。例如,對於「find_by_provider_and_uid(provider,uid)」方法。我如何測試這個?如果你給我一個主意,我會很高興。再次感謝。 – miyamotomusashi 2013-03-13 10:10:12

+0

這可以通過設置兩個或更多的燈具/工廠來完成,然後確保當你發送信息'find_by_provider_and_uid'給某個供應商和uid時,你會得到燈具/工廠。 如果我的回答幫助你,不要害羞地將其標記爲「正確答案」。 – 2013-03-13 12:20:25