ho questo codice:Rspec Mocks: finto/cedere il blocco da una chiamata di metodo
Net::SSH.start(@server, @username, :password => @password) do |ssh|
output = ssh.exec!(@command)
@logger.info 'SSH output: '
@logger.info output
end
posso prendere in giro lo SSH.Start utilizzando quadro finta di RSpec come questo, per dirmi che ho ha iniziato la sessione SSH:
Net::SSH.should_receive(:start).with("server", "user", :password => "secret") do
@started = true
end
questo mi dice se ho @ avviato la sessione ssh. ora ho bisogno di prendere in giro ssh.exec! metodo, che è abbastanza facile:
Net::SSH.should_receive(:exec!).with("command")...
Ma come si fa cedo/richiamare il blocco che contiene lo ssh.exec! chiamata al metodo, dal momento che ho deriso il metodo SSH.start? c'è probabilmente un metodo semplice che posso chiamare per eseguire questo blocco, ma non so cosa sia e non riesco a trovare alcuna spiegazione/documentazione veramente buona sulla struttura di derisione di rspec.
non sapeva che su should_receive ... c'è qualche buona documentazione su questa roba? il mio google-fu mi sta fallendo ... anche - cosa succede se non mi interessa il valore di ritorno del blocco ceduto? Voglio solo che sia eseguito, in modo che possa chiamare should_receive su ssh.exec! metodo. –
Questo è ciò che 'should_receive' significa: se non viene ricevuto, il test fallirà. Per quanto riguarda la documentazione, il libro RSpec è eccellente. Lo consiglio sia per imparare a usare RSpec, sia per imparare a conoscere BDD in generale. – Avdi
Oh, e potresti essere in grado di chiamare '#and_yield()' senza argomenti. – Avdi