[英]how to test show method in rspec
How do I format the following line to do a request to /users/1
? 如何格式化以下行以向
/users/1
发出请求?
get :show, {format: :json, id: @user1.id }
I have tried every permutation and bracket arrangement 我已经尝试了所有排列和括号排列
Resulting error: 产生的错误:
NoMethodError:
undefined method `json' for #<UsersController
The entire spec file: 整个规格文件:
describe UsersController, :type => :controller do require 'database_cleaner' 描述UsersController,:type =>:controller确实需要'database_cleaner'
DatabaseCleaner.strategy = :truncation
describe "GET users" do
before(:all) do
@user1 = FactoryGirl.create :user, name: "Yakov", default_pull_rate: 10, default_push_rate: 9
@user2 = FactoryGirl.create :user, name: "Smirnov", default_pull_rate: 15, default_push_rate: 1
@user1.save
@user2.save
@player1 = FactoryGirl.create :player, user_id: 1
@player1.save
end
it "returns all users" do
get :index, :format => :json
expect(response.status).to eq 200
body = JSON.parse(response.body)
user_names = body.map { |u| u["name"] }
expect(user_names).to match_array(["Yakov", "Smirnov"])
end
it "returns player for a user" do
get :show, {format: :json, id: @user1.id }
expect(response.status).to eq 200
end
DatabaseCleaner.clean
end
end 结束
Controller: 控制器:
class UsersController < ApplicationController
include ActionController::MimeResponds
def index
@users = User.all
respond_to do |format|
format.json { render json: @users }
end
end
def show
@user = User.find(params[:id])
respond_to do |format|
format.json { render json @user }
end
end
def create
@user = PowerUp.new(params[:user])
@user.save!
end
end
Your test is working perfectly. 您的测试运行良好。 It is actually showing you a problem in your controller.
它实际上向您显示了控制器中的问题。
In your show
action, you have 在
show
动作中,
format.json { render json @user }
It should be 它应该是
format.json { render json: @user }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.