首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建验证JSON响应的rspec测试?

如何创建验证JSON响应的rspec测试?
EN

Stack Overflow用户
提问于 2011-05-14 00:45:19
回答 5查看 19.2K关注 0票数 15

我有一个带有def inbox.方法的组控制器

如果用户是组成员,则inbox返回一个JSON对象。

如果用户不是成员,则由于CanCan权限,收件箱应该重定向。

如何编写rspec来测试这两个用例?

当前规格:

代码语言:javascript
运行
复制
require 'spec_helper'

describe GroupsController do
  include Devise::TestHelpers

  before (:each) do
    @user1 = Factory.create(:user)
    @user1.confirm!
    sign_in @user1
    @group = Factory(:group)
    @permission_user_1 = Factory.create(:permission, :user => @user1, :creator_id => @user1.id, :group => @group)
  end

  describe "GET inbox" do
    it "should be successful" do
      get inbox_group_path(@group.id), :format => :json
      response.should be_success
    end
  end
end

路由:

代码语言:javascript
运行
复制
inbox_group GET /groups/:id/inbox(.:format) {:controller=>"groups", :action=>"inbox"}

路由文件:

代码语言:javascript
运行
复制
resources :groups do
  member do
    get 'vcard', 'inbox'
  end
  ....
end
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-14 03:18:46

我是这样做的:

代码语言:javascript
运行
复制
describe "GET index" do
  it "returns correct JSON" do
    # @groups.should have(2).items
    get :index, :format => :json
    response.should be_success
    body = JSON.parse(response.body)
    body.should include('group')
    groups = body['group']
    groups.should have(2).items
    groups.all? {|group| group.key?('customers_count')}.should be_true
    groups.any? {|group| group.key?('customer_ids')}.should be_false
  end
end

我没有使用cancan,所以这部分我帮不上忙。

票数 36
EN

Stack Overflow用户

发布于 2013-11-27 23:11:04

有时,验证response是否包含有效的JSON并显示实际响应可能已经足够好了,下面是一个示例:

代码语言:javascript
运行
复制
it 'responds with JSON' do
  expect {
    JSON.parse(response.body)
  }.to_not raise_error, response.body
end
票数 4
EN

Stack Overflow用户

发布于 2011-10-17 18:39:53

试试这个:

代码语言:javascript
运行
复制
_expected = {:order => order.details}.to_json
response.body.should == _expected
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5995170

复制
相关文章

相似问题

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