我有一个带有方法 def inbox.
如果用户是群组成员,则收件箱返回一个 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/