Mol*_*far 12 ruby rspec ruby-on-rails rspec-rails ruby-on-rails-4
使用Rspec在Rails控制器中测试强params过滤的实际策略是什么?(除了应该匹配)如何编写失败的测试然后使其变为绿色?
zis*_*she 12
创建具有预期和所有(未满足)参数的2个哈希.然后将所有参数传递给动作并检查您是否只接收预期参数的模型.如果您没有使用强参数过滤器,则不会.然后添加权限params并再次检查测试.
例如,这个:
# action
def create
User.create(params)
end
# spec
it 'creates a user' do
expect_any_instance_of(User).to receive(:create).
with({name: 'Sideshow Bob'}.with_indifferent_access)
post :create, user:
{ first_name: 'Sideshow', last_name: 'Bob', name: 'Sideshow Bob' }
end
Run Code Online (Sandbox Code Playgroud)
将所有参数传递给用户,测试将失败.当你过滤它们时:
def user_params
params.require(:user).permit(:name)
end
Run Code Online (Sandbox Code Playgroud)
并改变行动User.create(user_params)
,测试将通过.
Mio*_*Mio 11
我个人使用来自thinkbot的shoulda-matcher.
有类似的东西:
it do
should permit(:first_name, :last_name, :email, :password).
for(:update, params: params)
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9332 次 |
最近记录: |