首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用RSpec检查JSON响应?

如何使用RSpec检查JSON响应?
EN

Stack Overflow用户
提问于 2011-03-02 04:23:29
回答 10查看 177.2K关注 0票数 157

我的控制器中有以下代码:

代码语言:javascript
复制
format.json { render :json => { 
        :flashcard  => @flashcard,
        :lesson     => @lesson,
        :success    => true
} 

在我的RSpec控制器测试中,我想验证某个场景确实接收到了成功的json响应,所以我有下面这行代码:

代码语言:javascript
复制
controller.should_receive(:render).with(hash_including(:success => true))

尽管当我运行我的测试时,我得到以下错误:

代码语言:javascript
复制
Failure/Error: controller.should_receive(:render).with(hash_including(:success => false))
 (#<AnnoController:0x00000002de0560>).render(hash_including(:success=>false))
     expected: 1 time
     received: 0 times

我是否错误地检查了响应?

EN

回答 10

Stack Overflow用户

发布于 2011-03-08 02:25:22

您可以像这样解析响应正文:

代码语言:javascript
复制
parsed_body = JSON.parse(response.body)

然后,您可以针对已解析的内容进行断言。

代码语言:javascript
复制
parsed_body["foo"].should == "bar"
票数 170
EN

Stack Overflow用户

发布于 2012-04-26 06:01:25

Kevin Trowbridge's answer基础上构建

代码语言:javascript
复制
response.header['Content-Type'].should include 'application/json'
票数 45
EN

Stack Overflow用户

发布于 2013-03-22 14:43:30

简单易用的方法来做到这一点。

代码语言:javascript
复制
# set some variable on success like :success => true in your controller
controller.rb
render :json => {:success => true, :data => data} # on success

spec_controller.rb
parse_json = JSON(response.body)
parse_json["success"].should == true
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5159882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档