Mam następującą specyfikację ...Stubbing RestClient odpowiedź w 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
Sposób post aplikacji Sinatra sprawia połączenia do usługi zewnętrznej przy użyciu REST klienta. Muszę jakoś zablokować pozostałe wywołania klienta, aby odesłać odpowiedzi w puszkach, więc nie muszę wywoływać rzeczywistego połączenia HTTP.
Moje kod aplikacji jest ...
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
Czy ktoś może mi powiedzieć jak to zrobić z RSpec? Przejrzałem Go i natknąłem się na wiele postów na blogu, które podrapały powierzchnię, ale nie mogę znaleźć odpowiedzi. Jestem całkiem nowy w okresie RSpec.
Dzięki
Proponuję przeniesienie 'podwójnego' skonfigurowanego do' let' bloku, a 'post' do' przed 'bloku'. – iain
Dzięki za sugestię @iain, ale w ogóle nie jest związana z pytaniem :) Ale tak, powinien on mieć "opisz" blok POST na/user/create'' z 'let (: sucessful_response) {...}' i poprzedni blok, a następnie opis odnoszący się do powodzenia i odpowiedzi błędu. –
Dzięki chłopaki. Wolę używać tego rozwiązania z narzędziami, które już mam, niż zwracać się do stron trzecich i to działa dobrze. – RobA2345