我不确定为什么这不适用于rails,但它在IRB中有效。
我正在做类似的事情:
response = response.first
response
是一个包含哈希值的数组。
在irb中,当试图模拟它时,它工作正常。
e.g:
>> a = [{'a'=>3}]
=> [{"a"=>3}]
>> a = a.first
=> {"a"=>3}
但是在调试器模式下,在黄瓜中(在我的步骤定义中),我在执行上述语句时得到了这个:
e.g:
(rdb:1) response = response.first
NoMethodError Exception: undefined method `first' for nil:NilClass
(rdb:1) response
nil
然后,response
设置为nil
。
为什么行为不同?
答案 0 :(得分:1)
您是否100%确定response
是本地变量?如果response
是方法,它可以解释您所看到的行为:本地变量 response
会影响方法 response
。如果要调用response
方法,则需要通过提供参数列表或接收器来明确告诉Ruby需要该方法:
response = response().first
# or
response = self.response.first