2017-04-30 1 views
1

Ich habe Probleme, wenn Sie versuchen, die Fang-Anweisung in einer Saga zu testen. Ich benutze Mocha und Chai, was den folgenden Test mit Error: error ausfällt, der an die Konsole ausgegeben wird.Testen Versuch-Fang in Redux-Saga

saga.js

function* submitCredentials(action) { 
    try { 

    } catch(e) { 
    yield put({type: LOGIN_FAIL, message: e.message}) 
    } 
} 

test.js

it('should catch errors',() => { 
    const generator = submitCredentials(); 
    const error = new Error('error'); 

    expect(generator.throw(error).value, put({ 
    type: actions.LOGIN_FAIL, error 
    })); 
}); 
+0

Teilt die erwarten Linie sein müssen 'erwarten (generator.throw (Fehler) .value) .to.equal (put ({ Typ: actions.LOGIN_FAIL, 'Fehler' }));' – BarthesSimpson

+0

Or eher ... 'expect (generator.throw (error) .value) .toequal (put ({ typ: actions.LOGIN_FAIL, {Nachricht: 'error'} }));' – BarthesSimpson

Antwort

1

es so versuchen:

const generator = submitCredentials(); 
const error = new Error('error'); 
generator.next().value 
output = generator.throw(error).value 
let expected = put({ 
    type: actions.LOGIN_FAIL, error 
}) 
expect(output).toEqual(expected) 
+0

Das ergibt dasselbe Ergebnis als mein Beispiel – Mantis

+0

Was ist Ihre Fehlermeldung? – andresmijares25

0

Ihr Generator eine Aktion mit der Fehlermeldung absetzt, aber in Ihrem Test Sie erwarten, dass die Aktionsnutzlast das Fehlerobjekt ist. Also, wenn Sie es ändern, um zu erwarten,

put({ 
    type: actions.LOGIN_FAIL, {message: 'error'} 
}) 

sollte es funktionieren.