RSPEC: Comment puis-je vérifier si un appel à une méthode d'une autre classe est appelé?

StackOverflow https://stackoverflow.com/questions/4106031

  •  29-09-2019
  •  | 
  •  

Question

Je peux vérifier si FeedItem :: populate_from_friend_to_user est appelé à l'intérieur de la classe utilisateur?

    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

Avec le code ci-dessus, j'obtiens:

undefined method `populate_from_friend_to_user' for :FeedItem:Symbol
Était-ce utile?

La solution

Tu ne devrais pas savoir La méthode est appelée, juste si La méthode est appelée .. vous savez juste si la méthode est l'appel:

Avant 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

Dans RSPEC 3 La syntaxe est

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

Autres conseils

N'oubliez pas que cela fonctionne uniquement dans RSPEC2. Pour RSpec3 U Appelez

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

https://www.relishapp.com/RSpec/RSpec-Mocks/v/3-0/docs/mesage-expectations

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top