9
votes

talez une variable d'instance à l'intérieur du contrôleur

J'utilise RSPEC 1.3.2 pour tester une action de contrôleur qui ressemble à ceci comme suit:

@bar.stub(:can_do_something?)
controller.instance_variable_get("@bar").stub(:can_do_something?)
controller.stub_chain(:bar, :can_do_something?)
Bar.new.stub(:can_do_something?)


2 commentaires

Où / comment @bar instancié?


@bar est attribué dans un avant_filter


3 Réponses :


1
votes
 Bar.any_instance.stub(:can_do_something?)

3 commentaires

@bar est attribué dans un avant_filter


Donc: bar.should_receive (: trouvez) .and_return Your_Object_or_mock


C'est allow_any_instance_of (bar). Pour recevoir (: can_do_something?). Et_return true aujourd'hui.



1
votes

Si tout échoue, vous pouvez faire quelque chose de similaire à Any_Instance.stub. Pour le compte rendu, cela me fait me sentir sale. XXX


1 commentaires

Je ne vais pas avec cette solution mais accepte votre réponse puisque c'est le seul qui a répondu à ma question



3
votes

Pour l'enregistrement, c'est un peu plus propre, je pense:

bar = Bar.new # or use FactoryGirl to create a Bar factory
bar.stub(:can_do_something?) { # return something }
controller.instance_variable_set(:@bar, bar)


0 commentaires