Rails 4控制器测试"Undefined Method Permit"

Jus*_*tin 6 unit-testing ruby-on-rails ruby-on-rails-4

我有一个基于Rails 4文档的简单控制器测试(使用Test :: Unit):

test "should create user" do
  assert_difference('User.count') do
    post :create, user: users(:sample_user)
  end
  assert_redirected_to user_path(assigns(:user))
end
Run Code Online (Sandbox Code Playgroud)

而且,尽管实际用户被创建得很好,但测试失败了,他说:

1)错误:UsersControllerTest #test_should_create_user:NoMethodError:未定义方法permit' for "832959492":String app/controllers/users_controller.rb:23:inuser_params'app/controllers/users_controller.rb:8:create' test/controllers/users_controller_test.rb:11:in在'test/controllers/users_controller_test.rb中的块(2级)中:10:在`block in'中

出于某种原因,测试无法识别新的Rails 4 permit方法.现在,我user_params在控制器中有一个私有方法.但是,我尝试将其移动到实际create操作并收到相同的错误.用户创建也是100%标准(完全没有任何疯狂 - 就像Rails文档一样).

有谁知道如何重写或以其他方式使这个测试通过?

Jer*_*een 19

好像正被数据POST编到你的create路线只是一个字符串,而不是属性的哈希值.什么users(:sample_user)回报?它只是一个ID,还是一个没有正确序列化的ActiveRecord对象?如果是AR,也许你需要发送users(:sample_user).attributes有效载荷?

  • 谢谢,我正在使用夹具,这就是问题所在.添加.attributes是解决方案! (2认同)