Выполнить заглушку rspec во время выполнения вместо объявления заглушки? - PullRequest
2 голосов
/ 23 марта 2012

Допустим, мне нужно было заглушить метод, чтобы он возвращал текущее время: MyClass.stub (: my_method) .and_return (Time.now.utc)

Проблема в том, что эта заглушка возвращает время при объявлении заглушки, а не когда я запускаю MyClass.new.my_method.

Есть ли способ запустить заглушку при вызове метода?

1 Ответ

1 голос
/ 23 марта 2012

Передайте блок в and_return, который выполняет ту работу, которую вы хотите выполнить во время выполнения, например ...

describe MyClass do

  it "runs at runtime" do
    puts Time.now.utc

    MyClass.stub(:my_method).and_return do
      Time.now.utc
    end
    sleep 5.seconds

    puts MyClass.my_method
  end
end
...