#ruby-on-rails #rspec #helper
Вопрос:
В моих представлениях я использую помощник, который принимает произвольный HTML в качестве блока:
<% some_block_helper do %>
Some arbitrary HTML and ERB variables here.
More HTML here.
<% end %>
Мой помощник делает кучу вещей с переданным блоком HTML, прежде чем вернуть его в представление (уценка и другое форматирование). Я хотел бы знать, каковы наиболее чистые способы проверки результата вызова помощника в RSpec, если таковые имеются. Я нашел несколько примеров, которые путаются с частными методами ERB, но это кажется немного хрупким и трудным для чтения.
Ответ №1:
Чтобы добавить немного к тому, что сказал Джеймс, я думаю, что что-то подобное должно сработать просто отлично:
describe SomeHelper do
it 'should do something' do
helper.some_block_helper { the_block_code }.should XXXX
end
end
Ответ №2:
- Для функционального теста напишите спецификацию обычного представления и проверьте результат.
- Чтобы модульно протестировать вашего помощника, передайте ему произвольную строку ввода html напрямую.
Если есть какие-либо другие трудности, которые я упускаю, пожалуйста, прокомментируйте?
Комментарии:
1. Поскольку тест написан на Ruby, а не в шаблоне, неясно, как воспроизвести поведение размещения HTML за пределами тегов ERB между
do
иend
.
Ответ №3:
Вот еще один пример, который расширяет ответ Кэмерона
describe SomeHelper do
it 'should do something' do
content = lambda { "blah" }
result = helper.some_block_helper(amp;content)
result.should include("blah")
result.should XXX
end
end