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
而且,尽管实际用户被创建得很好,但测试失败了,他说:
1)错误:UsersControllerTest #test_should_create_user:NoMethodError:undefined method
permit' for "832959492":String app/controllers/users_controller.rb:23:in
users_controller.rbpermit' for "832959492":String app/controllers/users_controller.rb:23:in
user_params’app / controllers / users_controller.rb:8:in create’testcreate' test/controllers/users_controller_test.rb:11:in
‘test / controllers / users_controller_test.rbcreate' test/controllers/users_controller_test.rb:11:in
块(2级)中:10:在`block in’中
由于某种原因,测试无法识别新的Rails 4 permit
方法。 现在,我将user_params
作为控制器中的私有方法。 但是,我尝试将其移动到实际的create
操作并收到相同的错误。 用户创建也是100%标准(根本不像Rails文档那样疯狂)。
有谁知道如何重写或以其他方式使这个测试通过?
看起来像你的create
路由POST
的数据只是一个字符串,而不是属性的哈希。 users(:sample_user)
返回什么? 它只是一个ID,还是一个没有正确序列化的ActiveRecord对象? 如果是AR,也许你需要发送users(:sample_user).attributes
作为有效载荷?