Протестируйте вложенного помощника расположения с RSpec и Haml

В ApplicationHelper у меня есть такой код:

def inside_layout layout = 'application', &block
  @template.instance_variable_set '@content_for_layout', capture(&block)
  concat \
    @template.render :file => "layouts/#{layout}", :use_full_path => true
end

который ведет себя как это:

application.html.haml:

!!!
%html
  %head
    ...
  %body
    = yield

common_pages.html.haml:

- inside_layout do
  ...

Затем расположение common_pages представляет в рамках расположения приложения.

Как я могу протестировать этого помощника с RSpec?

Когда я называю inside_layout из файла спецификации:

helper.inside_layout { }

RSpec говорит ошибку:

ActionView::MissingTemplate in 'ApplicationHelper inside_layout should render nested layout within application layout'
Missing layout layouts/application.erb in view path

Но приложение хорошо работает.

5
задан Sasha Koss 7 March 2010 в 07:24
поделиться

1 ответ

Вы не можете использовать вызовы рендеринга непосредственно в rspecs для помощников, так как view-path не задан в этом контексте.

Предложения:

  • используйте имитацию для вызова рендеринга.
  • измените ваш код и переместите ваш вызов рендеринга в шаблон представления, затем верните только аргументы для вызова рендеринга из метода inside_layout.

Подробнее: http://pivotallabs.com/users/john/blog/articles/854-friday-5-11-standup-view-paths-in-rspec-helper-tests-write-attribute -for-type-inference-

3
ответ дан 15 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: