2014-11-10 9 views
9

Sto tentando di scrivere specifiche per le singole funzioni nei miei decoratori. Ho specifiche per i miei ausiliari come il seguente (questo è solo un esempio):Come decorare i decoratori di tende con 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 

Dato il seguente decoratore, come posso scrivere una specifica per la funzione?

book_decorator.rb

class BookDecorator < Draper::Decorator 
    delegate_all 

    def display_days 
    model.months_to_display * 30 
    end 
end 

risposta

10

per il vostro campione, mi piacerebbe provare con qualcosa di simile:

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

Questo non funzionerà se il codice in prova si aspetta che @book sia non decorato, che è il modo consigliato di fare le cose: https://github.com/drapergem/draper#when-to-decorate-o bects – jelder

-2

Basta usare .decorate per l'entità generato (usando factorygirl o Faker)

+0

Il tuo esempio è valido solo perché Alter Lagos ha risposto anch'esso; D –

+0

che intendi ?! non l'ho capito –

Problemi correlati