I've got a test I'm trying to debug and I've noticed that the values are not being set to the user attributes properly. When I run p user.height_feet
or p user.height_inches
from the debug console, I get nil
, when instead I expect the them to return 1
and 8
respectively in the first iteration. p invalid_height.first
and p invalid_height.second
return 1
and 8
properly, however.
Here is the code:
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
And the output at the debug terminal:
(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
Someone in the #rubyonrails IRC channel suggested that it may be a scope issue and asked where my user is defined, saying that my before
and it
blocks may be referring to different users. I didn't think this should be an issue because I have other tests in the same spec file with both before
and it
blocks that run just fine. Thoughts?