[英]Test View Yield in RSpec
我有一個視圖布局文件,當前產生:
Layout.html.slim:
html
header
[content]
= yield :page_content
footer
[content]
然后是遵循相同格式的模板文件。
template.html.slim:
- content_for :page_content
#hello
我希望能夠測試模板的內容而不測試布局上的任何內容。 我發現如果創建一個rake布局文件,可以在rspec中執行以下操作:
describe "template.html.slim", type: :view do
it "should render a div" do
render template: 'template', layout: 'test_yielder'
expect(rendered).to have_tag("#hello")
end
end
其中test_yielder
是一個單行文件:
= yield :page_content
在完成這項工作的同時,我想知道是否有一種更干凈的方法來測試template
的內容,而無需創建額外的test_yielder
文件,而僅更改我如何調用render
函數?
是否存在更清潔的方式?
我通常會在控制器渲染模板時測試模板的輸出。
按照您的方法,您可以參考view_spec 。
視圖規格存在於規格/視圖中,並單獨呈現視圖模板。
# app/views/widgets/widget.html.erb <h2><%= @widget.name %></h2> # spec/views/widgets/widget.html.erb_spec.rb require "spec_helper" describe "rendering the widget template" do it "displays the widget" do assign(:widget, stub_model(Widget, name: "slicer")) render template: "widgets/widget.html.erb" rendered.should contain("slicer") end end
這將在不考慮任何布局的情況下已經起作用。 最終,您可以指定render template: 'something', layout: false
但實際上不是必需的。
我會說這已經是一個干凈的解決方案。
如果您重復幾次此操作,最終可以在測試套件中添加一個幫助器模塊(請參閱此答案 )
如果您的template.html.slim
是正確的,則您的測試應能按預期進行。 (我在苗條的回購中發現了這個相當老的問題以供參考)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.