Ruby on rails 为什么密码密钥的值为;"富",;来自迈克尔·哈特尔';《RubyonRails》第7章是什么?

Ruby 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

我目前正在跟随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
        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