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