我有一个我正在尝试调试的测试,我注意到这些值没有正确设置为用户属性。当我运行p user.height_feet
或p user.height_inches
从调试控制台运行时,我得到,相反,我希望它们在第一次迭代中分别nil
返回1
和。然而,返回并正确地返回。8
p invalid_height.first
p invalid_height.second
1
8
这是代码:
describe "when height is invalid" do
invalid_height = [[1, 8], [8, 2], [5, 13], ['text', 'text'], ['text', 11], [5, 'text'], ['', '']]
invalid_height.each do |invalid_height|
before do
user.height_feet = invalid_height.first
user.height_inches = invalid_height.second
end
it "should not be valid" do
debugger
user.should_not be_valid
end
end
end
以及调试终端的输出:
(rdb:1) p user.height_feet
nil
(rdb:1) p user.height_inches
nil
(rdb:1) p invalid_height.first
1
(rdb:1) p invalid_height.second
8
#rubyonrails IRC 频道中有人建议这可能是范围问题,并询问我的用户是在哪里定义的,说我的before
和it
块可能指的是不同的用户。我不认为这应该是一个问题,因为我在同一个规范文件中有其他测试,其中before
和it
块运行得很好。想法?