Ruby on Rails 2.3.8: Factory_girl: глобальная переменная не поддерживает ценность во время заводских сборок? - PullRequest
0 голосов
/ 20 июня 2011
  setup do
     @user = Factory.build(:user)
  end

Итак, в верхней части моего модульного теста у меня есть выше.

И в моих модульных тестах я делаю Factory.build(:object)

, но на самой фабрике,он говорит NoMethodError: undefined method my_attribute for nil:NilClass

моя фабрика:

Factory.define :object |o| do
   o.my_attribute @user.my_attribute
end

но @user равен nil = \

1 Ответ

1 голос
/ 20 июня 2011

@user не является глобальной переменной.Это переменная instance .В этом случае @user является переменной экземпляра набора тестов.Блок do...end, переданный Factory.define, не выполняется в контексте набора тестов, поэтому он будет иметь другие self и другие переменные экземпляра.Вместо этого вам нужно передать значение атрибута фабрике:

setup do
  @user = Factory.build(:user)
  Factory.build(:object, :my_attribute => @user.my_attribute)
end
...