Можно ли заглушить переменную экземпляра в rspec в неконтроллерном тесте?

Обычно я бы установил переменную экземпляра в своем контроллере, но я тестирую модульный метод модели, который зависит от значения переменной экземпляра, установленной в контроллере.

Можно ли с помощью rspec заглушить или установить эту переменную экземпляра для теста?

Все, что я видел до сих пор, заставляет думать, что я могу только заглушить / установить переменную экземпляра из контроллера или просмотреть тесты, но не тесты модели.


person Geremy    schedule 17.02.2012    source источник
comment
Код, который я пытаюсь выполнить для модульного тестирования: def sort_special if @ myvar.present? special_sort else regular_sort конец конец   -  person Geremy    schedule 18.02.2012


Ответы (1)


Я тестирую модульный метод модели, который зависит от значения переменной экземпляра, установленной в контроллере.

Это неправильный путь, диктует MVC что мы проводим четкую границу между этими тремя компонентами и интегрируем все в контроллеры. Если вы действительно должны пойти по этому пути, можете ли вы хотя бы показать код, в котором вы используете переменную контроллера?

person farnoy    schedule 17.02.2012
comment
Хорошо, в этом есть смысл. Обычно я создаю экземпляр переменной экземпляра в контроллере, но я пытаюсь протестировать рассматриваемый метод вне модульных тестов контроллера. Это действительно так? - person Geremy; 18.02.2012
comment
Да, вы тестируете свои модели с помощью модульных тестов для моделей. Но какова цель привязки моделей к контроллерам? - person farnoy; 18.02.2012