2017-02-02 11 views
2

Я использую rails 5.0.0.1, новичок в автоматизации тестирования и использовании rspec-rails-3.5.2 для автоматизации записи.Проверка контроллера rspec-rails с утверждениями и присваиваниями

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

describe 'GET #get_structure' do 
    context 'get attributes to build tree structure' do 
     let(:plan) { FactoryGirl.create(:plan) } 

     it 'expects all keys to build structure' do 
     get :get_structure, params: { id: 6, school_subdomain: 'chrys' } 

     expect(response).to render_template(:get_structure) 
     expect(assigns.keys.include?('collection')).to be true 
     expect(assigns.keys.include?('structure')).to be true 
     expect(assigns.keys.include?('config')).to be true 
     end 

    end 
    end 

После того, как я провел тестовые случаи я не понял, assert_template больше не поддерживается каким-либо причинам безопасности.

NoMethodError: assert_template has been extracted to a gem. To continue using it, add gem 'rails-controller-testing' to your Gemfile.

С момента своего упомянутого в RSpec рельсах документации, используя рельсы-контроллер-тестирования камень добавит обратно функциональность, я сделал добавить его.

In Rails 5.x, controller testing has been moved to its own gem which is rails-controller-testing. Using assigns in your controller specs without adding this gem will no longer work.

Я добавил rails-controller-testing-1.0.1 gem. Также в документации по ремонту рельсов-контролеров указано, что

rspec-rails automatically integrates with this gem since version 3.5.0. Adding the gem to your Gemfile is sufficient.

Но даже после добавления он по-прежнему бросает ту же ошибку.

Как решить эту проблему? Есть ли другой способ проведения контрольных тестов. Я уже несколько раз колотил голову над этим. Любая помощь будет оценена по достоинству. Заранее спасибо.

ответ

4

С release notes под Rails: Поддержка Rails 5 вы можете найти рекомендуемый способ тестирования контроллеров Запрос спецификации.

For new Rails apps: we don't recommend adding the rails-controller-testing gem to your application. The official recommendation of the Rails team and the RSpec core team is to write request specs instead. Request specs allow you to focus on a single controller action, but unlike controller tests involve the router, the middleware stack, and both rack requests and responses. This adds realism to the test that you are writing, and helps avoid many of the issues that are common in controller specs. In Rails 5, request specs are significantly faster than either request or controller specs were in rails 4, thanks to the work by Eileen Uchitelle1 of the Rails Committer Team.

Запросить тесты просмотров просмотров. Так что вам не нужно тестировать assert_template.

+0

Thanks @Narasima Reddy. Это был быстрый ответ. Я закончил использование спецификаций запросов, и он работает хорошо – Jazmin

 Смежные вопросы

  • Нет связанных вопросов^_^