[rspec-users] Test JSON with Cucumber

Ben Mabey ben at benmabey.com
Mon May 11 16:32:22 EDT 2009


Bill Kocik wrote:
> Hi Folks -
>
> I'm hoping someone has come before me in trying to do this. I want to
> use Cucumber to acceptance-test my JSON output. So far all I can do is
> validate that the JSON is valid, with this step:
>
> Then /^I should get valid JSON$/ do
>   assert_nothing_raised do
>     ActiveSupport::JSON.decode(@response.body)
>   end
>
> What I'd really like to do is be able to drill down into the JSON
> looking for the presence of certain elements in their correct places.
> For example, if my JSON is {"foo":{"bar":"baz"}} and parses out to
> {'foo' => {'bar' => 'baz'}} then I want to be able to test that
> ['foo']['bar'] gives me 'baz', or at least that ['foo']['bar'] exists.
> Unfortunately I'm not sure how to go about writing step definitions to
> do anything like this, since I haven't yet figured out a way to take a
> regular expression or string and inspect a hash with it.
>
> Anyone have any ideas? I could really use a brain-kick here.
>
> Thanks...
>
>   

Well.. IIRC ActiveSupport::JSON.decode will return a ruby hash of the 
JSON, correct?  So you should be able to make expectations on it just 
like a regular hash object.

json = ActiveSupport::JSON.decode(@response.body)
json['foo']['bar'].should == 'baz'.


Does that help or am I missing something about your question?

-Ben


More information about the rspec-users mailing list