Rails 4 App上的Draper和RSpec以及Factory Girl Controller Specs

时间:2014-02-01 05:47:47

标签: ruby-on-rails rspec ruby-on-rails-4 factory-bot draper

我第一次使用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启动时没有被包括在内?

1 个答案:

答案 0 :(得分:0)

啊哈哈!

我知道自己很傻。

这是因为我使用的是friendly_id

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

  ...

  def slug_candidates
    [:full_name, :id]
  end
end

我刚刚将full_name方法移回模型并且可以正常工作。