[rspec-users] what would be the best way to stub out an XHR request's response?

Ervin Weber webervin at gmail.com
Wed Sep 26 17:26:16 UTC 2012


You could create some function (say window.GiveMeUrlForAjax) that
returns uri for ajax request, your test could then easily overwrite
that function before triggering event to perform ajax. Also you might
consider creating a function that returns data (in production it would
take url from "GiveMeUrlForAjax" and do real ajax)" so you could
"stub" it in unit tests also.
In my opinion it is good to avoid all "if test?"  statements in
production code (you always can refactor them all into single config
file).

On Wed, Sep 26, 2012 at 7:16 PM, Patrick J. Collins
<patrick at collinatorstudios.com> wrote:
> If I have a javascript ajax request happening that fetches json data
> from a remote service, and I want to be running an integration test with
> rspec-- what would be the best way to stub out that service?
>
> The ideas that I've come up is:
>
> manually add a route + open up application controller from within my
> spec and dynamically create an action that returns mock json...  Then
> make my .js a .js.erb file, and do something like:
>
> $.ajax({ url: <%= Rails.env.test? ?
> "/my_added_route_that_hits_the_controller_method_that_returns_json" :
> "http://somewebservice.com/feed" %> });
>
> Can anyone come up with any better solutions?
>
> Patrick J. Collins
> http://collinatorstudios.com
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list