ruby-on-rails - Rails 4 Controller 测试 "Undefined Method Permit"

标签 ruby-on-rails unit-testing ruby-on-rails-4

我有一个基于 Rails 4 文档的简单 Controller 测试(使用 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) Error: UsersControllerTest#test_should_create_user: NoMethodError: undefined method permit' for "832959492":String app/controllers/users_controller.rb:23:inuser_params' app/controllers/users_controller.rb:8:in create' test/controllers/users_controller_test.rb:11:inblock (2 levels) in ' test/controllers/users_controller_test.rb:10:in `block in '



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

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

最佳答案

似乎是 POST 的数据编辑到您的create route 只是一个字符串,而不是属性的散列。 users(:sample_user) 是什么意思返回?它只是一个 ID,还是一个未正确序列化的 ActiveRecord 对象?如果是AR,可能需要发users(:sample_user).attributes作为有效载荷?

关于ruby-on-rails - Rails 4 Controller 测试 "Undefined Method Permit",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039292/

相关文章:

ruby-on-rails - Rails - 安装 pg (1.1.3) 时出现 Gem 错误,并且 Bundler 无法继续

ruby-on-rails - 从 linux openssl 与 ruby​​ openssl 库创建的 csr 之间的区别

java - 有没有办法验证 Spring Controller 上的方法是使用 Mockito 调用的

java - 为什么我们在 Assertj Swing 测试中偶尔会失败?

http - 获取 session 值

sql - 如何构成匹配多个ORDER BY项的WHERE条件?

ruby-on-rails - 如何在 jbuilder 中渲染一个部分两次?

java - jUnit 中 void 方法和线程的单元测试

ruby-on-rails - 在 Rails4 中使用 update_attributes 不更新表单数据

ruby-on-rails - Rails 升级的邮件程序中没有与 {} 匹配的路线