2012-04-01 10 views
27

Quando si verifica una risposta JSON da un test del controller RSPEC utilizzando JBuilder di DHH, il mio response.body è sempre "{}". Funziona bene nelle modalità di sviluppo/produzione E quando uso il metodo to_json invece di jbuilder, ottengo il corretto JSON nel mio response.body.Perché JBuilder non restituisce un corpo risposta in JSON durante il test di RSPEC

Chiunque ha idea del motivo per cui il mio response.body sarebbe sempre "{}" durante il test?

----- Debugger

che "dovrebbe restituire gli oggetti della spesa tramite JSON",: focus fare

get: indice,: format =>: json
fine

(RDB: 1) response.body

"{}"

risposta

55

Per tutti coloro che sta avendo lo stesso problema. L'ho immaginato.

È necessario chiamare render_views all'interno dei test del controller che si stanno eseguendo. Se lo fai, si dovrebbe quindi vedere un response.body con il JSON conteneva :)

+0

È necessario chiamare 'render_views' perché durante l'esecuzione dei controller, il rendering di visualizzazione è disabilitato per impostazione predefinita. Ciò accelera il funzionamento del test poiché è necessario testare il comportamento del controller solo in un test del controller. –

+2

come utilizzare 'render_views', ref: https://www.relishapp.com/rspec/rspec-rails/v/3-5/docs/controller-specs/render-views –

+0

https://github.com/ rspec/rspec-rails > Nota: per incoraggiare un test più isolato, le visualizzazioni non vengono visualizzate di default nelle specifiche del controller. Se stai verificando la logica di visualizzazione discreta, utilizza una specifica di visualizzazione. Se stai verificando il comportamento di un controller e visualizzi insieme, considera una specifica della richiesta. È possibile utilizzare 'render_views' se è necessario verificare il contenuto della vista di rendering all'interno di una specifica del controller, ma ciò non è raccomandato. –

25

Si potrebbe trovare una soluzione da https://github.com/rails/jbuilder/issues/32

Quindi, in rspec/spec_helper.rb

RSpec.configure do |config| 
    # https://github.com/rails/jbuilder/issues/32 
    config.render_views = true 
end 

Dopo l'opzione di cui sopra sono aggiunto, il risultato JSON verrà mostrato tramite il renderer di jbuilder

Problemi correlati