2011-01-09 3 views
0

Je suis nouveau à RSpec et comme j'écrivais un test de spec je suis tombé sur un problème où les tests de spécification passent même si les valeurs de retour sont différentes de ce que j'ai spécifié dans mes attentes. Par exemple:Comment spécifier les valeurs de retour attendues?

@q= Query.new 
    @q.should_receive(:number_to_name).with(0).and_return("no such boro") 
    @q.number_to_name(0) 

Cela passe même si le Query.number_to_name retourne une valeur différente quand je l'appelle avec 0. Je ne comprends pas de quoi faire de cela.

Répondre

-1

should_receive fait partie des outils de simulation de rspec.

@q.should_receive(:number_to_name).with(0).and_return("no such boro") 

Vous moquez number_to_name sur @q, la mise attend à ce que number_to_name sera appelée avec un argument de 0 et que la maquette sera de retour "no such boro". L'exécution @q.number_to_name(0) satisfait alors cette attente en appelant le simulacre. Votre implémentation de number_to_name n'a jamais été appelée et n'est pas testée.

+1

Downvoting parce que cela ne répond pas à la question initiale, la question était de savoir comment spécifier la valeur attendue. Et vous venez d'expliquer pourquoi le code d'exemple ne fonctionne pas. –

Questions connexes