ruby-on-rails - RAILS 5:ActionController::ParameterMissing - 无法让 RSPEC 通过
问题描述
我不确定如何通过测试,因为我是 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)
我哪里错了?
等候名单控制器.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' } }
推荐阅读
- vb.net - 无法在 Visual Studio 2008 中执行构建网站 - 无法识别的属性“targetframework”
- strace - 带有重定向的 Strace
- sql - 无法绑定多部分标识符“”
- github - 如何在某些特定事件后退出点击
- android - TextFormField 上的可点击图标 - 禁用 TextFormField 对图标单击的关注(颤振)
- python - 在熊猫的两点之间提取特定范围内的单词和fillna
- java - 如果变量结果超过两个并在结果末尾显示“和”,如何显示逗号?
- python - Ansible:条件寄存器检查
- react-native - 如何找到我们商店的更新位置
- mysql - 将原始 SQL 查询转换为 Laravel Eloquent 左外连接