Rspec: как я могу проверить, вызывается ли вызов метода другого класса? - PullRequest
25 голосов
/ 05 ноября 2010

Я могу проверить, вызывается ли 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

Ответы [ 2 ]

41 голосов
/ 05 ноября 2010

Вы не должны знать , где метод вызывается, просто , если метод вызывается. Вы просто знаете, является ли метод вызовом:

До 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)
9 голосов
/ 27 марта 2014

Помните, что это работает только в rspec2.Для rspec3 u звоните

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

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

...