1
我有一個測試我試圖調試,我注意到值沒有被正確設置爲用戶屬性。當我從調試控制檯運行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
,並在調試終端輸出:
(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
塊可能指的是不同的用戶。我不認爲這應該是一個問題,因爲我在同一個spec文件中有before
和it
塊的其他測試運行得很好。思考?
謝謝!非常豐富。我不熟悉'context'塊,因爲我是ruby的新手,但我會研究它來學習更多。 – Nick 2012-03-29 03:48:47