L'essentiel de mon problème est le suivant: -Comment retourner une valeur dynamique à partir d'une maquette Mocha en Ruby
J'écris une maquette Mocha en Ruby pour la méthode représentée comme « post_to_embassy » ci-dessous. Ce n'est pas vraiment notre préoccupation, dans le but de décrire le problème, ce que la méthode actuelle fait. Mais j'ai besoin du simulacre pour retourner une valeur dynamique. Le processus '& prc' ci-dessous s'exécute correctement à la place de la méthode actuelle. Mais la méthode "with" dans Mocha permet uniquement de renvoyer des valeurs booléennes. Donc, le code ci-dessous produit zéro. J'en ai besoin pour afficher la valeur transmise par orderInfoXml. Est-ce que quelqu'un sait d'une autre méthode que je peux utiliser?
require 'rubygems'
require 'mocha'
include Mocha::API
class EmbassyInterface
def post_to_embassy(xml)
puts "This is from the original class:-"
puts xml
return xml
end
end
orderInfoXml = "I am THE XML"
mock = EmbassyInterface.new
prc = Proc.new do |orderXml|
puts "This is from the mocked proc:-"
puts orderXml
orderXml
end
mock.stubs(:post_to_embassy).with(&prc)
mock_result = mock.post_to_embassy(orderInfoXml)
p mock_result
#p prc.call("asd")
sortie: -
This is from the mocked proc:-
I am THE XML
nil
Je pense que cette réponse est un peu trompeur. Bien qu'il soit correct de suggérer que vous pouvez utiliser Expectation # avec pour spécifier des valeurs de retour différentes pour différentes valeurs de paramètre, l'utilisation de Procs n'est pas nécessaire pour spécifier les valeurs de retour. –
True, le Proc n'est pas nécessaire. J'aurais pu spécifier les valeurs de retour sous forme de chaînes, directement. J'ai utilisé un Proc dans mon exemple de code pour refléter plus fidèlement la question. – metavida