J'écris un test lors de la création d'une inscription utilisateur
/sample_app/test/integration/users_signup_test.rb
require 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
.
.
.
test "valid signup information" do
get signup_path
assert_difference 'User.count', 1 do
post users_path, params: { user: { name: "Example User",
email: "[email protected]",
password: "password",
password_confirmation: "password" } }
end
follow_redirect!
assert_template 'users/show'
end
Qu'est-ce que «follow_redirect!»!
Cette méthode examine le résultat de l'envoi d'une requête POST et se déplace vers la destination de redirection spécifiée. (Tutoriel Rails)
Je peux imaginer le comportement en quelque sorte
Quelle est la destination de redirection spécifiée?
Si vous exécutez le test tel quel
rails test
> Green
Si vous faites référence au comportement du contrôleur correspondant à post users_path
/sample_app/app/controllers/users_controller.rb
.
.
.
def create
@user = User.new(user_params)
if @user.save
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
Si vous le changez en redirect_to @ user
> redirect_to root_path
rails test
> Red
FAIL["test_valid_signup_information", #<Minitest::Reporters::Suite:0x000055e3f2c61b10 @name="UsersSignupTest">, 1.4677946789997804]
test_valid_signup_information#UsersSignupTest (1.47s)
expecting <"users/show"> but rendering with <["static_pages/home",
...
La destination de la redirection est "static_pages / home"
follow_redirect!
est
"Regardez le résultat de l'envoi d'une requête POST",
Il semble donc suivre le comportement de redirection explicite dans le contrôleur correspondant
Recommended Posts