Rails 5 个测试 POST 请求

Rails 5 testing POST request

我有这个测试:

test "invalid signup" do
  get signup_path
  assert_no_difference 'User.count' do
    post users_path, user: {
      name: '', email: '', password: '',
      password_confirmation:''
    }
  end
  assert_template 'users/new'
end

但是当我 运行 它与 rake test 时,我看到这个错误:

Error: UsersSignupTest#test_invalid_signup: ArgumentError: unknown keyword: user test/integration/users_signup_test.rb:9:in block (2 levels) in ' test/integration/users_signup_test.rb:8:in block in '

如何为 POST 方法传递数据?

这是您应该复制的代码:

assert_no_difference 'User.count' do
  post users_path, params: { user: { name:  "",
                                     email: "user@invalid",
                                     password:              "foo",
                                     password_confirmation: "bar" } }
end

键值对 params: some_hashpost() 的第二个参数——不是键值对 user: some_hash

params 散列在 rails 中是一个非常重要的概念。