başarısız neden emin. Benim denemem:Michael Hartl'ın Ruby on Rails Eğiticisi ch 8.3 | Bu testin bu RoR app içine ve dışına günlüğü sınamak çalışıyorum
test "login with valid information followed by logout" do
get login_path
post login_path, session: { email: @user.email, password: 'password' }
assert is_logged_in?
assert_redirected_to @user
follow_redirect!
assert_template 'users/show'
assert_select "a[href=?]", login_path, count: 0
assert_select "a[href=?]", logout_path
assert_select "a[href=?]", user_path(@user)
delete logout_path
assert_redirected_to root_url
assert_not is_logged_in? # <-- this line is the one that cocks up.
follow_redirect!
assert_select "a[href=?]", login_path
assert_select "a[href=?]", logout_path, count: 0
assert_select "a[href=?]", user_path(@user), count: 0
end
Etiketli satır, başarısız olan tek satırdır ve neden emin değilim. Tam olarak kitabın kendisiyle aynı.
bu işlev için çıkış yolu güzergahlarına bir silme isteği gönderme:
def logout
session.delete(:user_id)
@current_user = nil
end
Ve is_logged_in:
def destroy
logout
redirect_to root_url
end
çıkış fonksiyonu şudur? Bu fonksiyon:
def is_logged_in?
!current_user.nil?
end
Bunların hepsi, kitabın tam olarak olması gerektiği gibi, isimlere kadar olan yoldur. (Kendi daha iyi isimlerim vardı, ama onları çaresizlikten değiştirdim.)
Site sadece iyi çalışıyor gibi görünüyor. Bir bağlantı için Here's kendiniz görebilirsiniz. Sadece giriş yapabilirim.
Başka bir yerde assert_not kullanıyorum ve gayet iyi çalıştı. Örneğin:
test "login with invalid information" do
get login_path
assert_template 'sessions/new'
post login_path, session: { email: "", password: "" }
assert_template 'sessions/new'
assert_not flash.empty?
get root_path
assert flash.empty?
end
Bu sınama başarılı. ('Flash', sayfanın üst kısmında, kullanıcının oturum açma bilgilerinin geçersiz olduğunu bildiren küçük bir kutuyu ifade eder.)
Herhangi bir fikri olan var mı? Çok teşekkürler.
Tamam iyi senin yöntemini denedik ve şimdi gayet iyi çalışıyor. Teşekkür ederim çok teşekkürler! –
@LlamaTarianism yup no problem :) –