Il nocciolo del mio problema è il seguente: -Come restituire un valore dinamico da un finto Mocha in Ruby
Sto scrivendo un finto Mocha in Ruby per il metodo rappresentato come "post_to_embassy" di seguito. Non è davvero una nostra preoccupazione, allo scopo di descrivere il problema, quale sia il metodo reale. Ma ho bisogno del mock per restituire un valore dinamico. Il proc '&' di seguito è in esecuzione correttamente al posto del metodo effettivo. Ma il metodo "with" in Mocha consente solo di restituire valori booleani. Quindi il codice qui sotto è zero. Ho bisogno di emettere il valore che viene passato attraverso orderInfoXml. Qualcuno sa di un metodo alternativo che posso usare?
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")
uscita: -
This is from the mocked proc:-
I am THE XML
nil
penso che questo risposta è un po 'fuorviante. Sebbene sia corretto suggerire che è possibile utilizzare Expectation # con per specificare diversi valori di ritorno per diversi valori di parametro, l'uso di Procs non è necessario per specificare i valori di ritorno. –
Vero, il Proc non è necessario. Potrei aver specificato i valori di ritorno come stringhe, direttamente. Ho usato un Proc nel mio codice di esempio per rispecchiare più da vicino la domanda. – metavida