デバッグしようとしているテストがあり、値がユーザー属性に正しく設定されていないことに気付きました。実行するとき、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
ブロックが正常に実行されているため、これが問題になるとは思いませんでした。考え?