2014-11-18 2 views
0

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

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', чтобы заставить его работать в спецификациях, но, наконец, я получил вышеупомянутую ошибку.

Итак, как бы вы протестировали это?

+0

Почему бы не проверить содержимое частичного вместо вспомогательного контроллера? –

+0

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

ответ

1

Где вы его тестируете? Убедитесь, что вызывается render_views.

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

HTH,

+0

Ну, я тестирую это в model_helpers_spec.rb, поэтому 'render_views' не будет работать. Это вещи - это вне контекста контроллера, и поэтому мне трудно определить, как его протестировать. –

+0

Вы решили? Как вы в итоге решили это? – Novae

+0

Я этого не сделал, я пропустил этот тест. –

Смежные вопросы