我尝试用 Rspec 测试我的观点。在我看来,我有一个由 Draper 生成的装饰器。这个装饰器是由正直的_exposure gem 暴露的。
我像这样创建我的 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
在我的助手的存根中,我生成了 Draper 装饰器。在这个装饰器中,我有方法可以调用一些 helper 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
我不希望我的装饰器对所有助手调用存根。那我该怎么办?