2014-11-10 22 views
9

Tôi đang cố viết thông số kỹ thuật cho các chức năng riêng lẻ trong trang trí của mình. Tôi có thông số kỹ thuật cho người giúp đỡ tôi như sau (đây chỉ là một ví dụ):Làm thế nào để spec draper trang trí với rspec.

book_helper.rb

module BookHelper 
    def heading_title 
    @book.name[0..200] 
    end 
end 

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 

Với trang trí sau, làm thế nào tôi có thể viết một spec cho chức năng?

book_decorator.rb

class BookDecorator < Draper::Decorator 
    delegate_all 

    def display_days 
    model.months_to_display * 30 
    end 
end 

Trả lời

10

Đối với mẫu của bạn, tôi muốn thử với một cái gì đó như:

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 
+0

Điều này sẽ không hoạt động nếu mã được thử nghiệm dự kiến ​​@book không được trang trí, đây là cách được khuyến nghị để thực hiện: https://github.com/drapergem/draper#when-to-decorate-o bjects – jelder

-2

Chỉ cần sử dụng .decorate cho thực thể được tạo ra (sử dụng FactoryGirl hoặc Faker)

+0

Ví dụ của bạn là hợp lệ chỉ vì Alter Lagos, trả lời quá, D –

+0

bạn có ý nghĩa gì ?! không hiểu –

Các vấn đề liên quan