为了调试工厂,我在问题行的末尾插入了rescue binding.pry
:
after_create do |my_object, proxy|
my_object.foreign_key_id = proxy.generated_attribute rescue binding.pry
不幸的是,在生成的FactoryGirl::Declaration::Implicit
上下文中,我似乎无法像“普通”代码(NameError: undefined local variable or method `proxy' for #<FactoryGirl::Declaration::Implicit:0x0...>
)那样访问上下文。 如何在Pry会话中检查和操作my_object
和proxy
?
代码被调用为黄瓜特征背景的一部分:
Given the following my_objects exist:
| property |
| value |
factory_girl_rails
和factory_girl/step_definitions.rb
是支持脚本所必需的。
答案 0 :(得分:16)
为了允许属性名称在没有块参数的情况下定义属性,factory_girl使用instance_eval
评估定义块,并取消定义Object
上的大多数私有方法,包括binding
。这意味着当您在上面调用binding.pry
时,您不会在该块的绑定上调用pry
;相反,您要定义一个名为“binding”的新属性,并在创建的属性定义上调用pry
。
您可以使用Kernel.binding.pry
来解决此问题。