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_hash
是 post()
的第二个参数——不是键值对 user: some_hash
。
params
散列在 rails 中是一个非常重要的概念。
我有这个测试:
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_hash
是 post()
的第二个参数——不是键值对 user: some_hash
。
params
散列在 rails 中是一个非常重要的概念。