2015-10-10 12 views
5

Il mio test è simile al seguente:Rspec prova raise_error in mancanza anche se il metodo genera un errore

it 'does return an error when passing a non-subscription or trial membership' do expect(helper.description_for_subscription(recurring_plan)).to raise_error(RuntimeError) end

mio metodo restituisce questo:

fail 'Unknown subscription model type!'

Eppure Rspec torna con questo fallimento messaggio:

Failure/Error: expect(helper.description_for_subscription(recurring_plan)).to raise_error(RuntimeError) RuntimeError: Unknown subscription model type!

Cosa sta succedendo ??

risposta

6

Si dovrebbe avvolgere l'aspettativa in un blocco, utilizzando {} invece di ():

expect{ 
    helper.description_for_subscription(recurring_plan) 
}.to raise_error(RuntimeError) 

Controllare le Errori Expecting sezione here

+0

Wow Non posso credere che ha funzionato. Perché questo rende anche diverso? Tutti i miei altri test usano expect() e trovano tutti lavoro. Grazie, a proposito! –

+0

Il modo in cui ci penso è quando stai testando un valore, come 'expect (a) == b', si usa'() '. Quando si verifica il risultato di una transazione, si utilizza un blocco con '{}'. Questo è principalmente usato per testare ** rilanciare un errore ** o ** cambiare osservazione **. Controlla la documentazione che ho incluso nella risposta – AbM

Problemi correlati