Ich schreibe einen Test beim Erstellen einer Benutzerregistrierung
/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
Was ist follow_redirect!
!
Diese Methode überprüft das Ergebnis des Sendens einer POST-Anforderung und wechselt zum angegebenen Umleitungsziel. (Rails Tutorial)
Ich kann mir das Verhalten irgendwie vorstellen
Was ist das angegebene Umleitungsziel?
Wenn Sie den Test so ausführen, wie er ist
rails test
> Green
Wenn Sie sich auf das Verhalten des Controllers beziehen, das "post users_path" entspricht
/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
Wenn Sie es in "redirect_to @ user"> "redirect_to root_path" ändern
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",
...
Das Umleitungsziel ist "static_pages / home".
follow_redirect!
Is
"Sehen Sie sich das Ergebnis des Sendens einer POST-Anfrage an",
Es scheint also dem expliziten Umleitungsverhalten im entsprechenden Controller zu folgen
Recommended Posts