Rails 4控制器测试"未定义的方法许可证"

时间:2013-09-26 21:47:27

标签: ruby-on-rails unit-testing 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

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

  

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

由于某种原因,测试无法识别新的Rails 4 permit方法。现在,我将user_params作为控制器中的私有方法。但是,我尝试将其移至实际的create操作并收到相同的错误。用户创建也是100%标准(根本不像Rails文档那样疯狂)。

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

1 个答案:

答案 0 :(得分:19)

似乎POST路由create的数据只是一个字符串,而不是属性的哈希值。 users(:sample_user)返回什么?它只是一个ID,还是一个没有正确序列化的ActiveRecord对象?如果是AR,可能需要发送users(:sample_user).attributes作为有效载荷吗?