9
votes

RSPEC Comment s'ouvrir?

J'ai essayé de basculer Ouvrir code>, la version Open-Uri, et je ne réussis pas.

J'ai essayé de faire ce qui suit mais la demande continue de passer à travers:

OpenURI::OpenRead.should_receive(:open).and_return("Whatever for now")


0 commentaires

3 Réponses :


1
votes

Je recommanderais d'utiliser quelque chose pour balancer le réseau à la place. Je crois que le favori actuel pour ce faire est fausseweb [ docs ]. Vous pouvez également vous intéresser à FakeWeb-Matchers pour RSPEC.

hélas, je pense que FakeWeb pourrait ne pas fonctionner avec ouvert () , en fait, it stubs net :: http , donc je ne sais pas si cela fonctionnera. Toute chance d'utiliser ouvert () ? :)


1 commentaires

Ouvrir () est un ajustement parfait pour lequel le code va donc utiliser net: http directement se sentir faux. :) J'ai passé plus de temps sur Google et j'ai trouvé une autre question de dépassement de pile qui m'a aidé. Mais merci d'avoir essayé!



9
votes

J'ai trouvé une solution ici sur le débordement de la pile après plus de temps sur Google (je ne peux pas croire que je ne l'ai pas trouvé auparavant).

Explication prise de Voici et écrit par Tony Pitluga Strong> (non lié). P>

Si vous appelez votre sommeil dans le contexte d'un objet, vous devez le faire monter sur l'objet [...]
La clé est, pour endormir le sommeil sur tout ce que "soi" est dans le contexte où le sommeil est appelé. P> blockQuote>

Alors je l'ai fait et tout a fonctionné: P>

let(:read) { mock('open') }

it "should return the new log-level when the log level was set successfully" do
    read.stub(:read).and_return('log-level set to 1')
    kannel.should_receive(:open).and_return(read)

    kannel.set_log_level(1).should == 1
  end


3 commentaires

Joli! Je pense que c'est raisonnable de modifier cela et de la publier comme solution pour ouverte () et accepter votre propre réponse. Il peut être difficile de trouver le dormir () article lors de l'embaspation ouverte () .


Très bon point sur l'encaissement sur le contexte de soi. Cela m'a aidé à résoudre un problème similaire, merci!


J'ai mis à jour votre code. Explication ici: Stackoverflow.com/a/11258596/608361



13
votes

Voici ce que je fais xxx

dans ma spécification, je fais ce qui suit: xxx


2 commentaires

Je pense que c'est un excellent moyen de contourner ce genre de problème. Merci de me le rappeler :)


En outre, gateway.any_instance.stub_chain (...)