2011-01-19 10 views

risposta

50

È possibile utilizzare un anonymous controller per testare l'ApplicationController, come descritto nella documentazione RSpec. C'è anche una sezione su testing helpers.

+0

In qualche modo ho perso quel controller anonimo! Grazie! – Mirko

+0

Esattamente quello che dovevo sapere! – Matthew

+2

funziona ancora in Rails4? Ho avuto un problema con la 'Nessuna corrispondenza del percorso {: Controller => "anonimo",: action => "qualche azione"}' .. – chrmod

21

È possibile richiamare i vostri metodi di supporto sul subject o @controller nella specifica.

Sono stato alla ricerca di una soluzione a questo problema e di controllo anonimo non era quello che stavo cercando. Diciamo che dispone di un controller vivere a app/controllers/application_controller.rb con un metodo semplice che non sia vincolato a un percorso REST:

class ApplicationController < ActionController:Base 

    def your_helper_method 
    return 'a_helpful_string' 
    end 

end 

Poi si può scrivere il test in spec/controllers/application_controller_spec.rb come segue:

require 'spec_helper' 

describe ApplicationController do 

    describe "#your_helper_method" do 
    it "returns a helpful string" do 
     expect(subject.your_helper_method).to eq("a_helpful_string") 
    end 
    end 

end 

Mentre @controller e subject può essere usato qui intercambiabile, vorrei andare per subject come il suo modo idiomatico di RSpec per ora.

+1

Utilizzando la vostra risposta a testare '' 'helper current_user''', e sta funzionando con grazia –

+0

Questo modello permetterà passando specifiche anche per i metodi che non sono stati aggiunti a' helper_method' argomenti. Preferisco definire i metodi helper come 'protected' e quindi speculare con' expect (subject.send (: your_helper_method)). Su eq "a_helpful_string" '. – Epigene

+0

send è un hack. non farlo –

Problemi correlati