Допустим, у меня есть некоторые данные, которые остаются неизменными во всех моих тестах, навсегда и на вечность.Я создаю эти данные в setup
.Я храню данные в @instance_var
.Но когда я вызываю @ instance_var.attribute в любом тесте, я получаю следующую ошибку:
RuntimeError: Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
Я знаю, что моя переменная экземпляра не равна нулю, потому что после того, как она установлена, я могу сделать ставку @instance_var.inspect на нем ...
Есть идеи?
РЕДАКТИРОВАТЬ:
setup do
user = Factory(:user)
account = Factory(:account)
set_user(user)
set_account(account)
puts "||||||||||||||||||||||||||||||||||||||||||||||" #this proves that the instance vars are not null
puts "| object_test.rb |"
puts "| #{@user.name} "
puts "| #{@account.name} "
puts "||||||||||||||||||||||||||||||||||||||||||||||"
end
Неудачный тест (с ошибкой выше)
test "for detection of first content with multiple contents" do
object = Factory(:object, :user_id => @user.id, :account_id => @account.id)
... #the rest of this test isn't important, as it is the above line, on @user, where the nil.id error occers
в test_helper.rb
def set_user(user)
@user = user
end
def set_account(account)
@account = account
end
Я не думаю, что мне нужны эти два метода, так как, когда я определяю переменную @instance в настройке, я получаю тот же результат
в test_helper.rb есть некоторые константы, установленные перед ActiveSupport :: TestCase:
self.use_transactional_fixtures = true
self.use_instantiated_fixtures = false
fixtures :all
, отключение которых ничего не сделало.= (