2017-02-02 4 views
2

J'ai utilisé les rails 5.0.0.1, je suis nouveau dans les tests d'automatisation et j'utilise rspec-rails-3.5.2 pour l'automatisation de l'écriture.Test du contrôleur rspec-rails avec assertions et affectations

Je souhaite tester certaines fonctionnalités de base de l'automate et les affectations de variables d'instance. A écrit un scénario de test de contrôleur qui vérifie si le modèle get_structure est rendu et les variables d'instance requises sont affectées.

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 

Une fois que je courais les cas de test i réalisé assert_template n'est plus pris en charge en raison de certaines des raisons de sécurité.

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

Depuis sa mentionné dans la documentation rspec-rails que l'utilisation gem-test rails-contrôleur rajoute la fonctionnalité, je l'ai fait ajouter.

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.

J'ai ajouté rails-controller-testing-1.0.1 gem. Également dans la documentation gem de rails-controller-testing, il est mentionné que

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

Mais même après l'ajout, il renvoie toujours la même erreur.

Comment résoudre ce problème? Existe-t-il un autre moyen de faire des tests de contrôleur? Je me suis cogné la tête dessus pendant assez longtemps. Toute aide serait appréciée. Merci d'avance.

Répondre

4

Des release notes sous Rails: Support pour Rails 5 vous pouvez trouver les contrôleurs moyen de tester recommandé est spécifications Demande.

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.

Demander également des tests hits hits également. Donc là vous n'avez pas besoin de tester avec assert_template.

+0

Merci @Narasima Reddy. C'était une réponse rapide. J'ai fini par utiliser les spécifications de la requête et cela fonctionne bien – Jazmin