Bir Ruby on Rails uygulaması oluşturuyorum ve "Beni hatırla" özelliğinin çalışıp çalışmadığını görmek için Kullanıcı modelimin kullanıldığı bir testi çalıştırmaya çalışıyorum. Çerezleri saklamak için cookies
karma değerinde Rails 'in kullanıyorum ve mevcut oturumu saklamak için session
hash. Ben session
değişkenini kullandığım çeşitli testler (entegrasyon, model ve kontrolör) çalıştırıyorum, ancak bu durumda bir nedenden dolayı tanınmıyor.Model testinde tanımlanmamış yerel değişken veya yöntem 'oturumu'
NameError: undefined local variable or method `session' for #<UserTest:0x0000000658b5c8>
hata aşağıda log_in_as
yöntemde else
blokta olur: Benim Kullanıcı testinde log_in_as
diyoruz
test_helper.rb
...
def log_in_as(user, options = {})
password = options[:password] || 'password'
remember_me = options[:remember_me] || '1'
if integration_test?
post login_path, session: { email: user.email, password: password, remember_me: remember_me }
else
session[:user_id] = user.id
end
end
; Bu testlerin her ikisi de başarısız.
require 'test_helper'
...
test "login with remembering" do
log_in_as(@user, remember_me: '1')
assert_not_nil cookies['remember_token']
end
test "login without remembering" do
log_in_as(@user, remember_me: '0')
assert_nil cookies['remember_token']
end
...
user_test.rb
cookies
tanınmadığı söyleyerek atılır. Burada sorun nedir?
Bu SO yanıtına bakın http://stackoverflow.com/questions/7216847/setting-a-session-variable-in-a-model. Temel olarak, bu özel hashlara doğrudan modelinizde erişemezsiniz. –
Bu testte bile böyle mi oluyor? Bu dosyalar "test/test_helper.rb" ve "test/models/user_test.rb" adreslerinde bulunur. Ben bir kullanıcı oturum açmış olup olmadığını görmek için bu yardımcı yöntemi gibi aslında 'test_helper.rb' oturumuna başka çağrıları var: '! Session [: user_id] .nil?' – sarangj