Подтвердить что ты не робот

RoR и RSpec: как получить доступ к переменным экземпляра контроллера без определения доступа?

Я пишу тесты rspec для своего контроллера, и я не могу найти решение следующей проблемы. Для одного из тестов краевого случая мне нужно проверить значение одной переменной экземпляра. Как я могу получить к нему доступ без необходимости определения доступа? По умолчанию обычный:

controller.variable.should == '3.15' 

не работает.

Определение

attr_reader: переменная

просто чтобы пройти тест, было бы глупо и я уверен, что есть более интеллектуальный способ.

4b9b3361

Ответ 1

controller.instance_variable_get(:var)

если вы это сделаете, вы можете пересмотреть свой подход к скрытию информации, чтобы вы тестировали основное поведение, а не случайные детали реализации. Ваши тесты должны гарантировать, что "вещь" функционирует так, как она должна, не будучи слишком жестко привязанной к конкретной реализации.

РЕДАКТИРОВАТЬ: Разве assigns(:var) рельсы не проверяют магию для того, чтобы делать то же самое с контроллерами?