私はRspecで私のビューをテストしようとしています。私の見解では、私はDraperによってDecoratorを生成しています。このデコレータはdecent_exposure gemによって公開されています。rspecによるテストビューのドレープデコレータ
私はそのような私のRSpecのテスト作成:私はドレイパーデコレータを生成し、私のヘルパーの私のスタブで
require 'spec_helper'
describe "boats/show.html.slim" do
let(:boat_decorate) { BoatDecorator.new(get_boat) }
let(:search) { Search.new }
before do
view.stub(:boat_decorate) { boat_decorate }
view.stub(:search) { search }
render :template => 'boats/show.html.slim'
end
it 'should see titlte' do
rendered.should have_selector(:h1, :content => boat_decorate.title)
end
end
を。このデコレータには、ヘルパーlink_to
を呼び出すメソッドがあります。
class BoatDecorator < ApplicationDecorator
decorates :boat
def region_link
h.link_to region_name, '#', :title => region_name
end
end
しかし、私はこのテストを起動すると、私はエラーを持っている:
1) boats/show.html.slim should see titlte
Failure/Error: render :template => 'boats/show.html.slim'
ActionView::Template::Error:
undefined method `link_to' for nil:NilClass
私は私のデコレータでスタブすべてのヘルパーコールを望んでいません。どうすればいいですか?私たちは、デコレータの仕様のように行うとセットアップに追加必要
これはあなたの質問に直接答えるものではありませんが、デコレータでビューをテストする理由は何ですか?デコレータを単独でテストしてみませんか?言い換えれば、 '#region_link'が期待されるHTMLを返すと主張するだけですか? (私のアプリケーションの1つでデコレータをテストする方法です)。 – myabc
私はデコレーターテストでそれを行います。私はビューをテストして、自分のビューに必要なすべてのメソッドをデコレータに実装していることを確認します。 – shingara