Ruby on rails 为什么密码密钥的值为;"富",;来自迈克尔·哈特尔';《RubyonRails》第7章是什么?
我目前正在跟随Michael Hartl的ROR书创建一个web应用程序。下面是来自的代码 清单7.21:test/integration/users\u signup\u test.rbRuby on rails 为什么密码密钥的值为;"富",;来自迈克尔·哈特尔';《RubyonRails》第7章是什么?,ruby-on-rails,ruby,forms,railstutorial.org,Ruby On Rails,Ruby,Forms,Railstutorial.org,我目前正在跟随Michael Hartl的ROR书创建一个web应用程序。下面是来自的代码 清单7.21:test/integration/users\u signup\u test.rb require 'test_helper' class UsersSignupTest < ActionDispatch::IntegrationTest test "invalid signup information" do get signup_path
require 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
test "invalid signup information" do
get signup_path
assert_no_difference 'User.count' do
post users_path, user: { name: "",
email: "user@invalid",
password: "foo",
password_confirmation: "bar" }
end
assert_template 'users/new'
end
end
需要“测试助手”
类UsersSignupTest
它用于测试用户注册表单的有效性。我有点困惑为什么名称、电子邮件、密码和密码确认的值是这样填写的?(例如,意思是为什么电子邮件的值是user@invalid;为什么密码的值是foo?)
非常感谢你,我期待着你的回答 您正在测试无效的注册信息,以确保未创建用户。您正在向用户执行http post请求创建操作,并在该用户散列中发送数据
Foo
和bar
是任意选择的值,主要是因为它们与密码和确认不匹配。您正在测试无效的注册信息,以确保未创建用户。您正在向用户执行http post请求创建操作,并在该用户散列中发送数据Foo
和bar
是任意选择的值,主要是因为它们不匹配,因为需要密码和确认。我同意toddmetheny的回答
事实上,您可以根据需要修改测试,例如
require 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
test "invalid signup information" do
get signup_path # go to the sign up path
assert_no_difference 'User.count' do # This assertion is checking that "username" should not be inserted in User table if the password and password_confirmation is not same
post users_path, user: { name: "username",
email: "user@invalid",
password: "123456",
password_confirmation: "123" }
end
assert_template 'users/new' # This assertion is checking that after invalid password user should go to users/new template
end
end
需要“测试助手”
类UsersSignupTest
希望我能说得更清楚些我同意托德梅尼的回答 事实上,您可以根据需要修改测试,例如
require 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
test "invalid signup information" do
get signup_path # go to the sign up path
assert_no_difference 'User.count' do # This assertion is checking that "username" should not be inserted in User table if the password and password_confirmation is not same
post users_path, user: { name: "username",
email: "user@invalid",
password: "123456",
password_confirmation: "123" }
end
assert_template 'users/new' # This assertion is checking that after invalid password user should go to users/new template
end
end
需要“测试助手”
类UsersSignupTest
希望我能更清楚地说明根据,Micheal试图在该部分中解释如何在我们的注册页面上进行验证,并向我们的应用程序说明从用户处接受哪些内容,以及从用户处不接受哪些内容
现在您的问题是为什么电子邮件填写为user@invalid。这是因为我们想测试我们在注册页面上应用的验证。根据这一原则,电子邮件只有在格式如下的情况下才有效user@invalid.com; 这使应用程序能够理解提交的有效格式
类似地,对于password:foo,您可以看到我们有两个应该匹配的值,即password和password\u confirmation。在上面的代码中,它们都不匹配,因此正如我所解释的,它再次让应用程序明白这不是有效的提交
最后,正如您看到的代码,这些值在下面
test "invalid signup information" do
这使我们理解,如果信息如下,则显示消息无效注册信息,即:
name: "",
email: "user@invalid",
password: "foo",
password_confirmation: "bar"
所有这些都是不可接受的信息。根据,Micheal试图在该部分中解释如何在我们的注册页面上进行验证,并向我们的应用程序明确哪些内容可以从用户处接受,哪些内容不可以从用户处接受
现在您的问题是为什么电子邮件填写为user@invalid。这是因为我们想测试我们在注册页面上应用的验证。根据这一原则,电子邮件只有在格式如下的情况下才有效user@invalid.com; 这使应用程序能够理解提交的有效格式
类似地,对于password:foo,您可以看到我们有两个应该匹配的值,即password和password\u confirmation。在上面的代码中,它们都不匹配,因此正如我所解释的,它再次让应用程序明白这不是有效的提交
最后,正如您看到的代码,这些值在下面
test "invalid signup information" do
这让我们了解了显示消息inv