Спецификации контроллера Draper, RSpec и Factory Girl в приложении Rails 4

Я использую 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', который является методом, который я переместил из своей модели User в свой UserDecorator.

Это странно, поскольку ни завод, ни спецификация не используют метод full_name.

Я пробовал несколько вещей:

  • ApplicationController.new.set_current_view_context в блоке before (что приводит к ошибке)
  • require 'draper/test/rspec_integration' в мой spec_helper.rb (который ничего не делает)
  • добавление before/after(:create) { |instance| instance.decorate } к моей фабрике (что тоже ничего не делает)

Я не уверен, что мне здесь не хватает, или даже почему возникает ошибка. Возможно, мои декораторы не включаются при загрузке RSpec?


person goddamnyouryan    schedule 01.02.2014    source источник


Ответы (1)


Ах ха!

Я знал, что поступаю глупо.

Это потому что я использовал friendly_id

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

  ...

  def slug_candidates
    [:full_name, :id]
  end
end

Я просто переместил метод full_name обратно в модель, и он работает.

person goddamnyouryan    schedule 01.02.2014