Ho il seguente spec ...Stubbing RestClient risposta in RSpec
describe "successful POST on /user/create" do
it "should redirect to dashboard" do
post '/user/create', {
:name => "dave",
:email => "[email protected]",
:password => "another_pass"
}
last_response.should be_redirect
follow_redirect!
last_request.url.should == 'http://example.org/dave/dashboard'
end
end
il metodo POST sull'applicazione Sinatra effettua una chiamata a un servizio esterno con resto-client. Devo in qualche modo bloccare la chiamata al resto del client per inviare risposte predefinite in modo che non debba richiamare una chiamata HTTP effettiva.
Il mio codice applicazione è ...
post '/user/create' do
user_name = params[:name]
response = RestClient.post('http://localhost:1885/api/users/', params.to_json, :content_type => :json, :accept => :json)
if response.code == 200
redirect to "/#{user_name}/dashboard"
else
raise response.to_s
end
end
Qualcuno può dirmi come faccio questo con RSpec? Ho cercato su Google e ho incontrato molti post del blog che graffiano la superficie, ma non riesco a trovare la risposta. Sono abbastanza nuovo al periodo di RSpec.
Grazie
Suggerirei di spostare l'impostazione 'doppia' in un blocco' let' e il 'post' in un blocco' before'. – iain
Grazie per il suggerimento @iain ma non collegato affatto alla domanda :) Ma sì, dovrebbe avere un blocco 'descrivi 'POST su/user/create'' con un' let (: sucessful_response) {...} ' e il blocco precedente e poi una descrizione per il successo e la risposta all'errore. –
Grazie ragazzi. Preferisco usare questa soluzione con gli strumenti che ho già, piuttosto che rivolgersi a una terza parte e questo funziona bene. – RobA2345