2011-09-19 7 views
5

FooとBarの2つのモデルがあります。 Fooにはask_bar_to_do_somethingというメソッドがあり、Fooのインスタンスが保存された後に呼び出されます。このメソッドは、このFooインスタンスの状態を変更しません。メソッドがオブジェクトに対して呼び出されたかどうかをテストする方法 - Rails RSpec

私はこのメソッドを1に戻し、Fooオブジェクトを作成して戻り値をチェックするラムダブロックを作成することを考えています。これを行うより良い方法はありますか?

ありがとうございます。

答えて

13

オブジェクトをモックしてメソッド呼び出しを期待しないのはなぜですか?

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 
+0

どうもありがとう、デクスターオブジェクトを作成するために工場を使用している場合。それはまさに私が探しているものです。 – AdamNYC

+0

これは 'should'構文ですか?誰かが 'expect'構文を共有できるのでしょうか? – ianstarz

+3

@ianstarz 'expect_any_instance_of(Foo).toを受け取る(:ask_bar_do_do_something)' – rxgx