У меня есть тест, который я пытаюсь отлаживать, и я заметил, что значения не соответствуют соответствующим атрибутам пользователя. Когда я запускаю 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
, которые работают нормально. Мысли?
Thanks! Очень информативно. Я не знаком с блоками 'context', поскольку я новичок в ruby, но я изучу его, чтобы узнать больше. – Nick