2010-11-21 20 views
27

Tengo varios controladores ya configurados. Ahora quiero comenzar a escribir pruebas de especificación para ellos. ¿Hay algún comando que genere los archivos de especificaciones automáticamente? Sé que los rieles hacen esto para obtener nuevos recursos, pero no sé si también lo hace para los controladores/modelos existentes.¿Cómo puedo generar especificaciones para los controladores existentes?

Respuesta

42
rails g rspec:controller ControllerName 

Cuando se le pide que anular el controlador existente, tipo n.

+6

Esto sólo genera los archivo de especificaciones para el controlador. Si quiere los archivos asociados, como ayudantes o fábricas, entonces quiere: 'rails g controller ControllerName -s' El -s al final hará que omita los archivos existentes para que no tenga que preocuparse por la pregunta con respecto a anular cualquier cosa. – Blimey85

+0

esto funciona para el modelo también? 'rspec: model'? esto existe en rspec 1? –

+0

¿Algo en el espacio de nombre de 'rspec' normalmente intenta crear un controlador? ¿O estás pensando en lo que 'rails g controller ControllerName' hace? –

4

Si ha configurado rspec en application.rb:

config.generators do |g| 
    g.test_framework  :rspec 
end 

continuación rails g controller things va a funcionar. No opte por sobrescribir los archivos a medida que se generan.

Toda una especificación parece que cuando se genera es la siguiente:

require 'spec_helper' 

describe ThingsController do 

    it "should be successful" do 
    get :index 
    response.should be_successful 
    end 

end 

que a menudo crean las especificaciones de forma manual, ya que es bastante trivial.

+6

Noté que a veces las pruebas generadas pueden ser más detalladas que eso. Especialmente cuando está generando recursos, la prueba contendrá el código para todos los métodos REST. – picardo

+0

Dijo específicamente "controladores existentes" en el título de su pregunta, por lo que no noté que había incluido modelos en el texto. De cualquier manera, volver a ejecutar el generador y decir 'n' cuando soliciten sobrescribir el modelo o el archivo controlador se adecuará a sus propósitos. :) –

8

Hay dos opciones. Si desea un archivo de especificaciones vacío, puede probar con:

rails g rspec:controller ControllerName 

Ahora, si quieres un archivo de especificaciones con las especificaciones iniciales para un controlador básico parado, con:

rails g rspec:scaffold ControllerName 
Cuestiones relacionadas