С учетом следующего теста RSpec:
context "items" do
it "should be able to place links in an expandable menu" do
output = helper.button("Hello", '#') do
self.content << helper.item("Test", "example.org")
end.should include "Test"
end
end
И следующего помощника:
def button(name, url, options = {}, &block)
if block_given?
content = with_output_buffer(&block)
content_tag(:li, :class => 'expandable menu-item') do
concat link_to(content_tag(:span, name), url, options)
concat content_tag :div, content, :class => :box
end
else
return content_tag :li, link_to(content_tag(:span, name), url, options), :class => :button
end
end
Предполагается, что этот помощник создает кнопку и расширяемое меню, по которому один раз щелкают, если блокдано помощнику кнопки.
Пример просмотра:
= menu do
= button("Test", '#') do
%h1 Hello you!
Производит:
<li class="expandable menu-item"><a href="#"><span>Test</span></a><div class="box"><h1>Hello you!</h1>
Именно то, что я ожидал!После того, как я проверил тест RSpec, он не прошел, и при дальнейшей проверке кажется, что в выводе
<div class="box">...</div>
RSpec ничего не получается:
expected "<li class=\"expandable menu-item\"><a href=\"#\"><span>Hello</span></a><div class=\"box\"></div></li>" to include "Test"
Я пытался поднять содержимое внутри, еслиblock_given?после content = with_output_buffer (& block) и он действительно пуст.Я, должно быть, что-то делаю не так в своем тесте, почему он пуст.
Помощь будет высоко ценится!:)