2017-09-19 7 views
0

に私は、ビューのレイアウト、現在生じファイルを持っています。テストビュー収量はRSpecの

template.html.slim:

- content_for :page_content 
    #hello 

私は、レイアウト上の任意のコンテンツをテストすることなく、テンプレートの内容をテストすることができるようにしたいです。私はすくいレイアウトファイルを作成する場合、私は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は1行ファイルです

:これは仕事を取得しながら

= yield :page_content 

、私がいましたtest_yielderファイルを作成せずに、render関数の呼び出し方法を変更するだけで、templateの内容をテストするためのクリーンな方法があれば疑問に思っていますか?

クリーンな方法がありますか?

+0

この質問にお答えしますか? – mabe02

答えて

0

私は、通常、コントローラによってレンダリングされたときのテンプレートの出力をテストします。

あなたのアプローチに従えば、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が正しい場合に予想されるとして、あなたがこのアクションいくつかの時間を繰り返している場合は、最終的にあなたのテストスイートにヘルパーモジュールを追加することができます

this answerを参照)

することは、あなたのテストが動作するはずです。 (参考までに、このかなり古い問題がslim repoにあります)

+0

この回答は役に立ちましたか? – mabe02

関連する問題