Скажем, я хочу отображать разные частичные элементы в зависимости от переменной экземпляра от контроллера. Я поставил логику в вспомогательный метод, который выглядит примерно так:Как проверить, что помощник вида делает частичным?
def display_my_partial(foo)
foo == bar ? render(partial_x) : render(partial_y)
end
и в представлении я называю (с помощью Слим):
= display_my_partial(@foo)
Что должен мой тест выглядеть? Я пытался что-то вроде:
expect(display_my_partial(foo)).to render(partial: 'partial_x')
но получил:
NoMethodError:
undefined method `matches?' for #<ActiveSupport::SafeBuffer:0x007ffb490aba80>
Мой пример является немного более сложным, так как мои обертоны во вложенном пространстве имен. Мне пришлось немного поэкспериментировать с просто usind render 'partial_x'
vs render partial: 'namespace/model/partial_x'
, чтобы заставить его работать в спецификациях, но, наконец, я получил вышеупомянутую ошибку.
Итак, как бы вы протестировали это?
Почему бы не проверить содержимое частичного вместо вспомогательного контроллера? –
Потому что я не знаю, если это хорошая практика для проверки просмотров в вспомогательных спецификациях. –