Newman Huang
2008-Dec-03 10:11 UTC
[rspec-users] I met a trouble: cannot do a form post to an outside website
now i use webrat for cucumber scenario testing. i have a page with a
form, which will post to a bank payment gateway. that is,
<form action="http://www.abank.com/pay/blablabla">
...
<input type=submit name="sbm" value="confirm"/>
</form>
my scenario step script is:
=And I press "confirm"
=
then I got such an error:
"No route matches "/pay/blablabla" with
{:method=>:post}..."
i think webrat or rails ignore the "http://www.abank.com" prefix
automatically. and then i wrote a test script
=get "http://www.abank.com/.."
puts response.body
=
yes, the test result proves the suspicion. i think it should be handled
in the rails testing layer. so, anybody can help me? thanks in advance.
--
Posted via http://www.ruby-forum.com/.
Newman Huang
2008-Dec-05 07:57 UTC
[rspec-users] I met a trouble: cannot do a form post to an outside website
Newman Huang wrote:> now i use webrat for cucumber scenario testing. i have a page with a > form, which will post to a bank payment gateway. that is, > > <form action="http://www.abank.com/pay/blablabla"> > ... > <input type=submit name="sbm" value="confirm"/> > </form> > > my scenario step script is: > > => And I press "confirm" > => > then I got such an error: > > "No route matches "/pay/blablabla" with {:method=>:post}..." > > i think webrat or rails ignore the "http://www.abank.com" prefix > automatically. and then i wrote a test script > > => get "http://www.abank.com/.." > puts response.body > => > yes, the test result proves the suspicion. i think it should be handled > in the rails testing layer. so, anybody can help me? thanks in advance.I solved this problem by hacking webrat''s code. walking around the requesting from webrat form, and then use Net::HTTP for a substitutor, require ''net/http'' require ''uri'' require ''nokogiri'' module Webrat class Form def submit if !out_website?(form_action) @session.request_page(form_action, form_method, params) else handle_outwebsite_action(form_action,params) end end def handle_outwebsite_action(form_action,params) #... end end end require it before cucumbing. -- Posted via http://www.ruby-forum.com/.