RoR и RSpec: как получить доступ к переменным экземпляра контроллера без определения доступа?
Я пишу тесты rspec для своего контроллера, и я не могу найти решение следующей проблемы.
Для одного из тестов краевого случая мне нужно проверить значение одной переменной экземпляра.
Как я могу получить к нему доступ без необходимости определения доступа?
По умолчанию обычный:
controller.variable.should == '3.15'
не работает.
Определение
attr_reader: переменная
просто чтобы пройти тест, было бы глупо и
я уверен, что есть более интеллектуальный способ.
Ответы
Ответ 1
controller.instance_variable_get(:var)
если вы это сделаете, вы можете пересмотреть свой подход к скрытию информации, чтобы вы тестировали основное поведение, а не случайные детали реализации. Ваши тесты должны гарантировать, что "вещь" функционирует так, как она должна, не будучи слишком жестко привязанной к конкретной реализации.
РЕДАКТИРОВАТЬ: Разве assigns(:var)
рельсы не проверяют магию для того, чтобы делать то же самое с контроллерами?