2016-10-21 3 views
0

Мой вопрос

Сценарий он работает, но в консоли при запуске тестов (bin/rspec) Я получаю это предупреждение:Как исправить: предупреждение устаревания о «any_instance»

Deprecation Предупреждения:

Использование any_instance из старого синтаксиса rspec-mocks :should без явного включения синтаксиса устарело. Используйте новый синтаксис :expect или явно включите :should. Вызывается из /home/wakematta/github/example/spec/features/aspec/features/premium_spec.rb:3:in `block (2 levels) в '.

Если вам нужно больше трассировки для любого из этих Устаревших в определить, где сделать необходимые изменения, вы можете настроить config.raise_errors_for_deprecations!, и она превратится в устаревания предупреждения в ошибки, что дает вам полную трассировку. предупреждение

1 устаревания общая

Мой сценарий

app/controllers/application_controller.rb

class ApplicationController < ActionController::Base 
    include ExtraContent 
end 

app/controllers/concerns/extra_content.rb

module ExtraContent 
    extend ActiveSupport::Concern 

    included do 
    helper_method :extra_content? 
    end 

    def extra_content? 
    current_user.premium? 
    end 
end 

app/controllers/concerns/extra_content.rb

module ExtraContent 
    extend ActiveSupport::Concern 

    included do 
    helper_method :extra_content? 
    end 

    def extra_content? 
    current_user.premium? 
    end 
end 

app/views/users/show.html.haml

%h1= @user.name 
- if extra_content? 
    %span.premium PREMIUM 

spec/features/premium_spec.rb

feature 'Premium features' do 
    scenario 'premium user can view extra content' do 
    ApplicationController.any_instance.stub(:extra_content?).and_return(true) 

    visit '/users/1' 
    expect(page).to have_content 'PREMIUM' 
    end 
end 

ответ

2

Изменить это:

spec/features/premium_spec.rb

feature 'Premium features' do 
    scenario 'premium user can view extra content' do 
    ApplicationController.any_instance.stub(:extra_content?).and_return(true) 

    visit '/users/1' 
    expect(page).to have_content 'PREMIUM' 
    end 
end 

Для этого:

spec/features/premium_spec.rb

feature 'Premium features' do 
    scenario 'premium user can view extra content' do 
    allow_any_instance_of(ApplicationController).to receive(:extra_content?).and_return(true) 

    visit '/users/1' 
    expect(page).to have_content 'PREMIUM' 
    end 
end 
Смежные вопросы