2010-11-05 16 views
23

我可以檢查FeedItem :: populate_from_friend_to_user是否在用戶類中被調用?Rspec:我如何檢查是否調用另一個類的方法?

it "should auto populate feed after user.add_friend" do 
     @user.add_friend(@friend1) 
     @user.should_receive('FeedItem::populate_from_friend_to_user').with(@friend1, @user) 
    end 

與上面的代碼我得到:

undefined method `populate_from_friend_to_user' for :FeedItem:Symbol 

回答

36

你應該不知道哪裏方法被調用,只是如果該方法被調用。你只知道,如果該方法是請致電:

it "should auto populate feed after user.add_friend" do 
    FeedItem.should_receive(:populate_from_friend_to_user).with(@friend1, @user) 
    @user.add_friend(@friend1) 
end 
+0

哇,謝謝!搜索很長,找到這個答案:) – dimsuz 2011-09-22 11:59:28

+13

這是'Object.should接收(:方法).with(params)'現在 – 2012-03-21 00:04:43

+4

@ChrisNicola:我的經驗不承認這一點? – Ashe 2012-09-06 01:04:23

8

請記住,這僅適用於rspec2。對於rspec3ü致電

expect(@user).to receive(:your_method)

https://www.relishapp.com/rspec/rspec-mocks/v/3-0/docs/message-expectations

+2

如果':your_method'是一個類方法,該怎麼辦? – 2015-08-17 17:55:50

+0

那麼你不希望運行它對象我想?我不知道我是否有你的問題;] – 2015-08-19 14:02:56

+0

我覺得我想。我必須調用expect_on_any_instance_of(User)... – 2015-08-19 17:24:38

相關問題