デバッグしようとしているテストがあり、値がユーザー属性に適切に設定されていないことに気付きました。 p user.height_feet
またはp user.height_inches
をデバッグコンソールから実行すると、nil
が返されます。代わりに、最初の繰り返しでそれぞれ1
と8
が返されると思います。しかし、p invalid_height.first
およびp invalid_height.second
は、1
および8
を正しく返します。ここでRSpec - ユーザー属性に適切に設定されていない値
はコードです:
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
とデバッグ端子の出力:#rubyonrails IRCチャンネルで
(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
誰かが、それはスコープの問題であることが示唆され、どこで私の求めて私のbefore
ブロックとit
ブロックが異なるユーザーを参照している可能性があると、ユーザーが定義されています。同じ仕様ファイルで、before
とit
の両方のブロックがうまく動作するテストがあるので、これは問題になるとは思わなかった。思考?
ありがとうございます!非常に有益。私はRubyを初めて使っているので、 'context'ブロックに慣れていませんが、もっと詳しく知るために調べます。 – Nick