shi*_*ara 2 rspec ruby-on-rails view draper
我尝试用Rspec测试我的视图.在我看来,我有一个由Draper生成的Decorator.这个装饰器由decent_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
Run Code Online (Sandbox Code Playgroud)
在我的助手存根中,我生成了Draper Decorator.在这个装饰器中,我有一个方法来调用一些帮助器link_to.
class BoatDecorator < ApplicationDecorator
decorates :boat
def region_link
h.link_to region_name, '#', :title => region_name
end
end
Run Code Online (Sandbox Code Playgroud)
但如果我启动此测试,我有一个错误:
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
Run Code Online (Sandbox Code Playgroud)
我不希望我的装饰师发来所有帮助调用.那我该怎么办?
我们需要像装饰器规范一样添加设置: ApplicationController.new.set_current_view_context
require 'spec_helper'
describe "boats/show.html.slim" do
let(:boat_decorate) { BoatDecorator.new(get_boat) }
let(:search) { Search.new }
before do
ApplicationController.new.set_current_view_context
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3177 次 |
| 最近记录: |