如何使用rspec测试content_for

时间:2013-06-13 18:13:33

标签: ruby-on-rails ruby testing rspec

我正在尝试测试我的application_helper的yield_for方法,但我不知道最好的方法。我尝试了下面的代码但得到以下错误:

 Failure/Error: self.stub(:content_for).with(:foo).and_return('bar')
   Stub :content_for received unexpected message :with with (:foo)

application_helper.rb

def yield_for(content_sym, default = '')
  content_for?(:content_sym) ? content_for(content_sym) : default
end

application_helper_spec.rb

describe '#yield_for' do
  it 'should fetch the yield' do
    self.stub(:content_for).with(:foo).and_return('bar')
    helper.yield_for(:foo).should == 'bar'
  end
end

2 个答案:

答案 0 :(得分:1)

尝试在帮助程序上创建存根

it 'should fetch the yield' do
  helper.stub(:content_for).with(:foo).and_return('bar')
  helper.yield_for(:foo).should == 'bar'
end

让你的测试通过这个

def yield_for(content_sym, default = '')
  content_for(content_sym) ? content_for(content_sym) : default
end

答案 1 :(得分:0)

我正在使用rspec(3.1.0),它应该与:

一起使用
describe '#yield_for' do
  it 'should fetch the yield' do
    helper.content_for(:foo, 'bar')
    expect(helper.yield_for(:foo)).to eq('bar')
  end
end