2016-03-22 3 views
0

Я в настоящее время следую за книгой ROR Майкла Хартля, чтобы создать веб-приложение. Ниже приведен код от Chapter 7.Почему ключ пароля имеет значение «foo» в книге Майкла Хартла Ruby on Rails Chapter 7?

Листинг 7,21: тест/интеграция/users_signup_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: "[email protected]", 
            password:    "foo", 
            password_confirmation: "bar" } 
     end 
     assert_template 'users/new' 
     end 
    end 

Он должен проверить правильность формы пользователь регистрации. Я немного запутался, о том, почему значения имя, электронной, пароль и password_confirmation заполнены таким образом? (Имея в виду, например, почему значение электронной почты является пользователь @ недействительных, почему ценность Пароль является Foo?)

Спасибо очень много, и я с нетерпением жду вашего ответа!

ответ

3

Вы проверяете недопустимую регистрационную информацию, чтобы убедиться, что пользователь не создан. Вы выполняете HTTP-запрос для пользователя, создаете действие, и вы отправляете данные в этом хеши пользователей. Foo и bar являются произвольно выбранными значениями, в основном значимыми, поскольку они не соответствуют паролю и подтверждению.

2

Я согласен с 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: "[email protected]", 
           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 

Надежда, что я сделать его более ясным

0

Согласно Chapter 7 from Ruby-on-Rails Tutorial, Мичил пытается объяснить в этом разделе, как должно быть валидации на нашей странице регистрации и дать понять нашему применению того, что принять от пользователя и что НЕ принять от пользователя.

Теперь ваш вопрос, почему электронной заполнена, как пользователя @ недействительных. Это связано с тем, что мы хотим, чтобы проверили валидации, которые мы применили на странице регистрации. В соответствии с этим письмо является действительным только в том случае, если формат похож на [email protected]; это заставляет приложение понимать действительный формат представления.

Аналогично для пароля: обув, вы можете увидеть, что у нас есть два значения, которые должны соответствовать, которые являются паролем и password_confirmation. И в приведенном выше коде они оба не соответствуют, так что, как я объяснил, это делает приложение понятным, что это не действительная подача.

И, наконец, как вы можете увидеть код, эти ценности находятся под

test "invalid signup information" do 

, который заставляет нас понять, что показать сообщение неверной информации SIGNUP, если информация, как показано ниже, т.е.:

name: "", 
email: "[email protected]", 
password:    "foo", 
password_confirmation: "bar" 

Все это неприемлемая информация.