0

私は次のようなものを持っています:

value = nil

if some_condition
  value =my_object.do_stuff()
end

そして、私のテストでは、次のことがわかりました。

MyObject.any_instance.should_receive(:do_stuff)

ただし、メソッドが呼び出されたことをテストして、元のコードを実行させたいと思います。次のようにする必要はありません。

MyObject.any_instance.should_receive(:do_stuff).and_return(:some_dummy_value)

それを行う方法はありますか?

4

2 に答える 2

2

方法がありますand_call_original

MyObject.any_instance.should_receive(:do_stuff).and_call_original

https://github.com/rspec/rspec-mocks#delegating-to-the-original-implementationを参照してください

于 2012-11-28T11:31:27.710 に答える
0

FactoryGirl でオブジェクトを作成し、それをテストするよりも優れていると思います。工場の作り方などが読めます。例:

FactoryGirl.define do
  factory :my_object do
   [*here is your attributes*]
  end
end

したがって、ファクトリを作成した後、このメソッドが使用するテストを作成し、次のように記述する必要があります。

my_object = FactoryGirl.create(:my_object)
my_object.should_receive(:do_stuff)

コード内では、テストを実行するときに「my_object」で「do_stuff」を実行します。

于 2012-11-28T11:29:34.307 に答える