Как проверить, вызван ли метод для объекта - Rails RSpec - PullRequest
5 голосов
/ 19 сентября 2011

У меня есть две модели, Foo и Bar.В Foo есть метод ask_bar_to_do_something, который вызывается после сохранения экземпляра Foo.Этот метод не изменяет состояние этого экземпляра Foo.

Я собираюсь сделать так, чтобы этот метод возвращал 1, и создать лямбда-блок, который создает объект Foo и проверяет возвращаемое значение.Есть ли лучший способ сделать это?

Спасибо.

1 Ответ

13 голосов
/ 19 сентября 2011

Почему бы не смоделировать объект и не ожидать вызова метода?

class Foo < ActiveRecord::Base
  after_create :ask_bar_to_do_something

  def ask_bar_to_do_something
    #blah blah blah
  end
end

Если вы используете фабрику для создания объекта

Foo.any_instance.should_receive(:ask_bar_to_do_something)
Factory(:foo)

Остальное

foo = Foo.new(:attr1 => 'value1', :attr2 => 'value2')
foo.should_receive(:ask_bar_to_do_something)
foo.save
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...