2013-03-13 5 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 (поставщик, uid). Как я могу проверить это? Если вы дадите мне идею, я буду счастлив. Еще раз спасибо. – miyamotomusashi

+0

Это можно сделать, установив два или более светильника/фабрики, а затем убедитесь, что когда вы отправляете сообщение 'find_by_provider_and_uid' с определенным поставщиком и uid, вы возвращаете прибор/фабрику. Если мой ответ помог вам, не стесняйтесь отмечать его как «правильный ответ». –

Смежные вопросы