Почему декоратор не работает?

У меня проблема с моим декоратором:

class ReviewDecorator < Draper:Decorator
  delegate_all

  def author
    @author = User.find_by(review.user_id)
    "#{@author.firstname} #{@author.lastname}"
  end
end

Каждый раз, когда я тестирую этот декоратор, я получаю эту ошибку:

ReviewDecorator#author отображает полное имя автора обзора Ошибка/ошибка: expect(review.author).to eq 'John Doe' NoMethodError: undefined method firstname' for nil:NilClass # ./app/decorators/review_decorator.rb:7:inauthor' # ./spec/decorators/review_decorator_spec.rb:10:in `block (3 уровня) в '

Тест Rspec:

require 'spec_helper'

describe ReviewDecorator do

  let(:user) { build(:user, firstname: 'John', lastname: 'Doe') }
  let(:review) { described_class.new(build(:review, user: user)) }

  describe '#author' do
    it 'displays review author fullname' do
      expect(review.author).to eq 'John Doe'
    end
  end
end

Что я делаю неправильно?


person Nekron    schedule 19.04.2015    source источник
comment
Можете ли вы также опубликовать соответствующую часть спецификации? Вы заглушили автора или есть автор в тестовой базе данных до вызова этого теста?   -  person Bart Jedrocha    schedule 19.04.2015
comment
Я отредактировал свой основной пост и добавил rspec.   -  person Nekron    schedule 19.04.2015


Ответы (1)


Согласно вашему тестовому файлу, код должен быть таким.

class ReviewDecorator < Draper:Decorator
  delegate_all

  def author
    "#{user.firstname} #{user.lastname}"
  end
end
person xdazz    schedule 19.04.2015