Ускоритель отсутствует метод expire_fragment в rspec

Я использую уборщик, чтобы очистить кэш фрагментов, и все работает нормально при разработке, но я получаю сообщение об ошибке в наших спецификациях

2) Admin - Categories #index displays all categories
     Failure/Error: create_basic_category_set
     NoMethodError:
       undefined method `expire_fragment' for #<NavigationSweeper:0x007fdc01a10970 @controller=nil>
     # ./app/sweepers/navigation_sweeper.rb:5:in `after_save'
     # ./spec/support/utilities.rb:21:in `create_basic_category_set'
     # ./spec/features/admin/categories_spec.rb:5:in `block (2 levels) in <top (required)>'

это подметальная машина

class NavigationSweeper < ActionController::Caching::Sweeper
  observe Category, Product, Series

  def after_save(record)
    expire_fragment 'navigation'
  end
end

и это где я использую его в контроллере

class Admin::CategoriesController < Admin::BaseController
  before_filter :set_up_nav_array
  cache_sweeper :navigation_sweeper, only: [ :destroy, :update, :create, :update_positions ]

  def index
    @roots = Category.roots
  end

это где он терпит неудачу в спецификации (несколько экземпляров)

pickers = FactoryGirl.create(:category, :name => "Pickers")

Кто-нибудь есть идеи, почему он не может найти этот метод?

1 ответ

Решение

Ладно, кажется, лучшая стратегия здесь - это заглушить метод, как в spec_helper.rb

RSpec.configure do |config|
  config.before(:each) do
    NavigationSweeper.any_instance.stub(:expire_fragment)
  end
end
Другие вопросы по тегам