написание тестов метода модели с использованием минитеста

Я использую мини-тест для тестирования фреймворка. Я пытаюсь писать модельные тесты.

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 или нет.

Как я могу написать этот тест. Я жду ваших идей? Заранее спасибо.


person miyamotomusashi    schedule 13.03.2013    source источник


Ответы (1)


Для этого вы можете использовать assert_respond_to.

Полный пример:

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

Мое личное мнение заключалось бы в том, чтобы проверить поведение метода, а не утверждать, существует ли он или нет, но я оставлю это на ваше усмотрение.

person Kevin Sjöberg    schedule 13.03.2013
comment
Спасибо большое. На самом деле, я думаю, как вы. Но мой текстовый лидер хочет все тесты. Кроме того, я хочу задать еще один вопрос. Как я могу проверить поведение. Например, для метода find_by_provider_and_uid(provider, uid). Как я могу проверить это? Если вы дадите мне идею, я буду счастлив. Спасибо еще раз. - person miyamotomusashi; 13.03.2013
comment
Этого можно добиться, установив два или более приспособления/фабрики, а затем убедившись, что при отправке сообщения find_by_provider_and_uid с определенным провайдером и uid вы получите обратно приспособление/фабрику. Если мой ответ помог вам, не стесняйтесь отметить его как правильный ответ. - person Kevin Sjöberg; 13.03.2013