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”:“[email protected]”}}’
<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.
I have also found that link and that only shows GET requests. Its a very
good example for those. But I need to make a pull request where I need
to
send data in JSON just like the example you posted here in cucumber, and
I
dont seem to find the way to do this in Rspec. at least I cant make it
receive the arguments in JSON.
I have found ur post while googlin. Its very useful if you wanna use
cucumber. I dont like cucumber for many reasons and would like to use
RSPEC
to test this. do you know how to do it? If so can you help me?