2010-09-09 9 views
4
User.should_receive(:update_attributes).with({'these' => 'params'}) 

Que signifie cette déclaration? these n'est instancié nulle part comme signifiant quoi que ce soit.Que signifie cette instruction RSpec par défaut?

Sa déclaration est la suivante:

describe "with valid params" do 
    it "updates the requested user" do 
     User.should_receive(:find).with("37") { mock_user } 
     User.should_receive(:update_attributes).with({'these' => 'params'}) 
     put :update, :id => "37", :user => {'these' => 'params'} 
    end 

Je dis cela parce que je reçois une erreur:

unknown attribute: these 

qui vient du scénario mentionné ci-dessus ..

Répondre

3

Il dit que la méthode update_attributes doit être appelée sur le modèle User avec un argument de {'these' => 'params'} pendant le test en cours.

Fondamentalement, ce qui suit devrait se produire lors de l'exécution:

User.update_attributes({'these' => 'params'}) 

Plus ici: http://rspec.info/documentation/mocks/message_expectations.html

+0

Bien, mais qu'est-ce que c'est et qu'est-ce que les params? – Trip

+2

C'est juste un exemple de hachage. Vous le remplacez par ce que votre contrôleur attend. Par exemple, vous pourriez mettre à jour le nom de l'utilisateur, ce serait donc 'with ({: first_name =>" something ",: last_name =>" else "})' –

0

Vous ne devez pas remplacer le hachage ({ 'ces' => 'params'}). Pensez-y comme un contrat. J'ai dit que quand je PUT, le hash suivant devrait être reçu par le modèle de mes objets update_attributes. Dans la ligne suivante, vous appelez la méthode de mise à jour et le contrat est vérifié.