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
<patr...@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@rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to