RAILS 5: ActionController::ParameterMissing - 无法通过 RSPEC
RAILS 5: ActionController::ParameterMissing - Unable to get RSPEC to pass
我不确定如何通过测试,因为我是 TDD 的新手。
我在我的规范中显示了以下针对 creates a waitinglist email
的失败测试:
Failure/Error: params.require(:waitinglist).permit(:email)
ActionController::ParameterMissing:
param is missing or the value is empty: waitinglist
我不确定如何让我的测试在控制器中声明 waitinglist_params
时通过 params.require(:waitinglist).permit(:email)
。我哪里错了?
waitinglists_controller.rb
class WaitinglistsController < ApplicationController
before_action :set_waitinglist, only: [:show, :update, :destroy]
def create
@waitinglist = Waitinglist.create!(waitinglist_params)
render json: @waitinglist, status: :created
end
private
def set_waitinglist
@waitinglist = Waitinglist.find(params[:id])
end
def waitinglist_params
params.require(:waitinglist).permit(:email)
end
end
我有规格:
RSpec.describe 'Waitinglists API', type: :request do
let!(:waitinglists) { create_list(:waitinglist, 10) }
let!(:waitinglist_id) { waitinglists.first.id }
#CRUD: Create - POST request [create]
describe 'POST /waitinglists' do
let(:valid_attributes) { { email: 'john.doe@example.com' } }
context 'when the request is valid' do
before { post '/waitinglists', params: valid_attributes }
it 'creates a waitinglist email' do
expect(json['email']).to eq('john.doe@example.com')
end
end
end
end
您必须将您的参数包装到带有键 waitinglist
的散列中,如下所示:
params: { waitinglist: { email: 'john.doe@example.com' } }
我不确定如何通过测试,因为我是 TDD 的新手。
我在我的规范中显示了以下针对 creates a waitinglist email
的失败测试:
Failure/Error: params.require(:waitinglist).permit(:email)
ActionController::ParameterMissing:
param is missing or the value is empty: waitinglist
我不确定如何让我的测试在控制器中声明 waitinglist_params
时通过 params.require(:waitinglist).permit(:email)
。我哪里错了?
waitinglists_controller.rb
class WaitinglistsController < ApplicationController
before_action :set_waitinglist, only: [:show, :update, :destroy]
def create
@waitinglist = Waitinglist.create!(waitinglist_params)
render json: @waitinglist, status: :created
end
private
def set_waitinglist
@waitinglist = Waitinglist.find(params[:id])
end
def waitinglist_params
params.require(:waitinglist).permit(:email)
end
end
我有规格:
RSpec.describe 'Waitinglists API', type: :request do
let!(:waitinglists) { create_list(:waitinglist, 10) }
let!(:waitinglist_id) { waitinglists.first.id }
#CRUD: Create - POST request [create]
describe 'POST /waitinglists' do
let(:valid_attributes) { { email: 'john.doe@example.com' } }
context 'when the request is valid' do
before { post '/waitinglists', params: valid_attributes }
it 'creates a waitinglist email' do
expect(json['email']).to eq('john.doe@example.com')
end
end
end
end
您必须将您的参数包装到带有键 waitinglist
的散列中,如下所示:
params: { waitinglist: { email: 'john.doe@example.com' } }