0

我第一次使用 Draper,效果很好……除了它打破了我的大部分规格。一个例子:

我正在设置一个 account_settings_controller_spec.rb

describe '#create' do
  before do
    @user = create :user
   end
end

这以前工作得很好(我已经config.include FactoryGirl::Syntax::Methods开始像这样打电话给工厂了)

但是现在当我打电话时,create :user我得到undefined method 'full_name' for class 'User'了我从我的用户模型移动到我的 UserDecorator 的方法。

这很奇怪,因为工厂,也不是规范,使用该full_name方法。

我尝试了多种方法:

  • ApplicationController.new.set_current_view_context在前块中(这会导致错误)
  • require 'draper/test/rspec_integration'到我的 spec_helper.rb (什么都不做)
  • 添加before/after(:create) { |instance| instance.decorate }到我的工厂(也什么都不做)

我不确定我在这里缺少什么,甚至不确定为什么会抛出错误。当 RSpec 启动时,也许我的装饰器没有被包括在内?

4

1 回答 1

0

Ahh ha!

I knew I was being stupid.

It's because I was using friendly_id

class User < ActiveRecord::Base
  extend FriendlyId
  friendly_id :slug_candidates, use: :slugged

  ...

  def slug_candidates
    [:full_name, :id]
  end
end

I just moved the full_name method back to the model and it works.

于 2014-02-01T07:02:27.767 回答