2011-06-07 13 views
25

Estoy integrando devise_invitable en mi aplicación y tuve que escribir un controlador personalizado - InvitationsController - para anular algunos métodos en la gema. Ahora, quiero escribir pruebas para cubrir lo que he hecho, pero no puedo entender cómo generar una especificación para el nuevo controlador. Cualquier ayuda sería muy apreciada.¿Cómo puedo generar una especificación de controlador usando rspec?

Gracias!

+0

Para un archivo de especificaciones con especificaciones predefinidas, se puede comprobar mi respuesta en esta otra pregunta http://stackoverflow.com/a/30808557/895789 –

Respuesta

41

la forma rspec es

rails g rspec:controller passwords 

da

create spec/controllers/passwords_controller_spec.rb 

--update

Puede configurar la aplicación para generar rspec cuando se crea el modelo o controlador. Añadir a config/application.rb

# don't generate RSpec tests for views and helpers. 
config.generators do |g| 
    g.test_framework :rspec, fixture: true 
    g.fixture_replacement :factory_girl, dir: 'spec/factories' 

    g.view_specs false 
    g.helper_specs false 
end 

$rails g model category 
    invoke mongoid 
    create app/models/category.rb 
    invoke rspec 
    create  spec/models/category_spec.rb 
    invoke  factory_girl 
    create  spec/factories/categories.rb 
$rails g controller categories 
    create app/controllers/categories_controller.rb 
    invoke haml 
    create app/views/categories 
    invoke rspec 
    create spec/controllers/categories_controller_spec.rb 
    invoke helper 
    create app/helpers/categories_helper.rb 
    invoke rspec 
    invoke assets 
    invoke coffee 
    create  app/assets/javascripts/categories.js.coffee 
    invoke scss 
    create  app/assets/stylesheets/categories.css.scss 
12

Si está utilizando Rails 3 + rspec e instaló rspec (rails g rspec:install), debería generar especificaciones de controlador para cada controlador que genere (y otros objetos).

Si necesita crear uno a mano. Simplemente cree un nuevo new_controller_name_spec.rb en su spec/controllers.

require 'rails_helper' 

describe NewControllerName do 
    # Test! 
end 

También podría tratar de generar el archivo controlador, dicen No cuando se le pregunta si desea sobrescribir el controlador existente, y es de esperar que va a regenerar la rspec para ese controlador de nuevo.

Cuestiones relacionadas