2009-04-08 20 views
5

Quando eseguo un post nel mio Rails test funzionalePerché il post ha fallito nel mio test funzionale Rails?

setup do 
    post :create, :user => Factory.attributes_for(:user) 
end 

e non riesce, non ottengo alcune risposte sul perché. So che fallisce perché la mia affermazione per assicurarsi che ci sia un record aggiuntivo nel database non riesce.

ho cercato di fare

setup do 
    post :create, :user => Factory.attributes_for(:user) 
    assert_valid @controller.object 
end 

ma oggetto è un metodo protetto.

Come è possibile esaminare gli errori sull'oggetto del modello risultanti dalla chiamata successiva?

Sto usando Shoulda e Factory Girl, ma sospetto che non importi.

risposta

6

Aggiungere la seguente asserzione:

assert_nil assigns(:user).errors 

Quale fallirà se ci sono stati errori salvare il vostro oggetto (forse una convalida), e vi mostrerà il valore degli errori oggetto.

+0

che fa esattamente quello che voglio. Grazie! – dbrown0708

+0

Grazie! Questo mi ha aiutato molto! :) – CalebHC

0

Utilizzo le guide 3.2.13 e sembra che assert_nil non funzioni correttamente come indicato nella risposta precedente.

Questo è ciò che ha funzionato per me:

assert_empty assigns(:user).errors 

Credo che questo sia perché anche un successo "Salva" chiamata restituisce un ActiveRecord: Errori oggetto contenente un hash vuoto di "messaggi", così si potrebbe anche fare this:

assert_empty assigns(:user).errors.messages 
Problemi correlati