Я использую decent_exposure представить некоторые instance_variables:Как проверить наличие переменных экземпляра в контроллере?
expose(:my_custom_variable) { current_user.my_variable }
Так что теперь эта переменная доступна в моем контроллере как my_custom_variable
.
Но я хотел бы убедиться, что он там с моим тестом.
assert_not_nil my_custom_variable
Какой из них не работает. Если я поставлю отладчик в свой тест, у меня нет доступа к этой переменной. Я пробовал все из следующего.
@controller.instance_variable_get("@my_custom_variable")
@controller.instance_variable_get("my_custom_variable")
@controller.instance_variable_get(:my_custom_variable)
@controller.assigns(:@my_custom_variable)
assigns(:my_custom_variable)
@controller.get_instance(:my_custom_variable)
@controller.get_instance("my_custom_variable")
@controller.get_instance("@my_custom_variable")
Ничего из этого не может быть. Любые идеи?
Примечание: Я не использую rspec. Это встроено в функциональные тесты rails.
Возможно, проблема 'decent_exposure' только присваивает локальной переменной, когда представление оказывается? Несмотря на то, что просмотрел документы, похоже, это не так. –
Использует вспомогательные методы, а не экземпляры или локальные переменные. https://github.com/voxdolo/decent_exposure/blob/master/lib/decent_exposure/expose.rb#L51-L62 –