如何使用rspec指定draper装饰器.

Zac*_*ack 9 rspec ruby-on-rails draper

我试图在装饰器中为各个函数编写规范.我有我的助手的规格如下(这只是一个例子):

book_helper.rb

module BookHelper
  def heading_title
    @book.name[0..200]
  end
end
Run Code Online (Sandbox Code Playgroud)

book_helper_spec.rb

require 'spec_helper'

describe BookHelper do
  subject { FactoryGirl.build(:book) }

  it 'limits title to 200 characters' do
    title = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium.'
    subject.name = title
    subject.save
    @book = subject
    expect(heading_title).to eq(title[0..200])
  end
end
Run Code Online (Sandbox Code Playgroud)

鉴于以下装饰器,我如何编写该函数的规范?

book_decorator.rb

class BookDecorator < Draper::Decorator
  delegate_all

  def display_days
    model.months_to_display * 30
  end
end
Run Code Online (Sandbox Code Playgroud)

Alt*_*gos 12

对于您的样本,我会尝试使用以下内容:

require 'spec_helper'

describe BookDecorator do
  let(:book) { FactoryGirl.build_stubbed(:book).decorate }

  it 'returns the displayed days' do
    expect(book.display_days).to eq('600')
  end

end
Run Code Online (Sandbox Code Playgroud)