0

我的装饰器有问题:

class ReviewDecorator < Draper:Decorator
  delegate_all

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

每次我测试这个装饰器时,我都会收到这个错误:

ReviewDecorator#author 显示评论作者全名 Failure/Error: 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 levels)在 '

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

我做错了什么?

4

1 回答 1

1

根据你的测试文件,代码应该是这样的。

class ReviewDecorator < Draper:Decorator
  delegate_all

  def author
    "#{user.firstname} #{user.lastname}"
  end
end
于 2015-04-19T12:42:43.807 回答