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

标签 json ruby-on-rails-3 testing rspec cancan

我有一个带有方法 def inbox.

的群组 Controller

如果用户是群组成员,则收件箱返回一个 JSON 对象。

如果用户不是成员(member),则收件箱应根据 CanCan 权限重定向。

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

当前规范:

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

路线:

inbox_group GET /groups/:id/inbox(.:format) {:controller=>"groups", :action=>"inbox"}

路线文件:

resources :groups do
  member do
    get 'vcard', 'inbox'
  end
  ....
end

最佳答案

我是这样做的:

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,因此我无法在这部分提供帮助。

关于json - 如何创建验证 JSON 响应的 rspec 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5995170/

相关文章:

ios - JSON 到 iOS 的子弹形式数据

已安装 Mysql2 gem 但不是必需的

ruby-on-rails - 如何将 Rails 应用程序转换为 gem?

ruby-on-rails - 如何使模型上的字段不可搜索,但仍应在_source中使用?

bash - bash 中的复合逻辑测试

testing - 没有使用 Rspec 的请求规范的回溯

nunit - 使用 Assert 比较两个对象

javascript - 在 AngularJS REST 中使用 JSON

c# - ASP.NET 核心 REST 服务返回无效的 json

JSON 不返回 Spring Data REST 中的列