What you are asking for is a way to test your API from the perspective of a
client ( like curl ) . I wanted to do the same thing in a project I worked
on, and I used Cucumber + Rack::Test + some JSON helper methods and I am
really happy with how it worked out. I've blogged about this here :
http://www.emilsoman.com/blog/2013/05/18/building-a-tested/ . I've set up
an example Rails 4 app with tests here :
https://github.com/emilsoman/rails-4-api . Hope that helps.


On 5 September 2013 20:44, <and...@benjamin.dk> wrote:

> Hey everyone,
>
> This is a problem that has been bothering me for some time. I am building
> an API function that should receive data in json and response in json. My
> controller tests run fine(Since I abstract that the data gets there already
> decode from JSON and only the answer needs to be interpreted ).
>
> I Also know that the function runs fine since I have used curl to test it
> with JSON arguments and it works perfectly.
> (ex: curl -i --header "Accept: application/json" --header "Content-Type:
> application/json" -d '{"test":{"email":"and...@benjamin.dk"}}'
> <url_with_the_service>)
>
> But obviously I would like to write request(feature) tests to test this
> automatically and the way I see it they should work exactly like curl,
> i.e., hit my service like it was an external call. That means that I would
> like to pass the arguments in JSON and receive an answer. I am pretty lost
> since all the examples I can see people treat arguments as it was already
> decoded.
>
> My question is: I am following a wrong premise in wanting to send the
> arguments and request as a JSON one since i will be testing that rails
> works, because this is its responsibility? But I would like to see how
> robust my code his to wrong arguments and would like to try with JSON.
>
> something of this type:
>
> it "should return an error if there is no correct email" do
>   params = {:subscription => {:email => "andre"}}
>
>   post "/magazine_subscriptions", { 'HTTP_ACCEPT' => "application/json",
> 'Content-Type' => 'application/json', 'RAW_POST_DATA' => params.to_json }
> end
>
> Do you know how this is possible? and please let me know if you think I am
> testing it wrong.
>
> all the best,
>
> Andre
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-talk+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/2e689330-f4cd-426c-9c63-e42ee4e707de%40googlegroups.com
> .
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CAJ%3Dox-DDjORidKrScC%3DkTSeLnO71-sys4ah0gc8MRP_VO_hkVQ%40mail.gmail.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to