web-dev-qa-db-ja.com

Rspec:別のクラスのメソッドの呼び出しが呼び出されたかどうかを確認するにはどうすればよいですか?

FeedItem :: populate_from_friend_to_userがユーザークラス内で呼び出されているかどうかを確認できますか?

    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
27
rtacconi

whereメソッドが呼び出されたことを知らないでくださいifメソッドが呼び出されただけです。メソッドが呼び出されたかどうかがわかります。

RSpec 3より前

 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

RSpec 3の場合構文は

expect(Object).to receive(:method).with(params)
42
shingara

はrspec2でのみ機能することを覚えておいてください。 rspec3の場合はu呼び出し

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

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

9
Adam Piotrowski