2016-12-29 2 views
1

Ich versuche, die geworfen einen Fehler in einer Generatorfunktion wie folgt zu testen, mit Jest und Chai:Wurffehler im Generator testen?

// function 

    function * gen() { 
     yield put({ type: TIME_OUT_LOGOUT }) 
     throw new Error('User has logged out') 
    } 

    //test 

    let genFunc = gen() 

    expect(genFunc().next).to.deep.equal(put({ type: TIME_OUT_LOGOUT })) 

    expect(genFunc().next).to.throw(Error('User has logged out')); 

Aber es funktioniert nicht. Welches wäre der richtige Weg dies zu testen?

Antwort

1

Versuchen Sie Ihren Testcode von genFunc().next zu genFunc.next().value


EDIT Wechsel:

expect(genFunc.next().value).toEqual(put({type: TIME_OUT_LOGOUT})); expect(genFunc.next).toThrow(Error);

expect(() => genFunc.next()).toThrow(Error); auch für die zweite Behauptung funktionieren würde:

Die Behauptungen sollten , aber die Hülle Die Funktion () => genFunc.next() ist nicht erforderlich, da genFunc.next keine Parameter annimmt.

+0

Es scheint nicht zu funktionieren, die tatsächlich Sinn machen, da die Generatorfunktion keinen anderen nächsten Wert hat, weil kein anderer Ertrag übrig ist. – Nicolas

+1

Funktioniert Ihre erste Behauptung? Auf jeden Fall habe ich eine Korrektur vorgenommen. Folgendes funktioniert bei mir (mit Jasmine-Syntax): 'expect (genFunc.next(). Value) .toEqual (put ({type: TIME_OUT_LOGOUT})); expect (() => genFunc.next()). ToThrow (Fehler ('Benutzer hat sich ausgeloggt')); 'Beachten Sie die Wrapper-Funktion um' genFunc.next() 'in der zweiten Assertion. – Assan

+0

Ok, ich habe es geschafft, die Behauptung zu ändern: expect (genFunc.next(). Value) .toEqual (put ({type: TIME_OUT_LOGOUT})); expect (() => genFunc.next()). toThrow (Fehler); Wenn Sie Ihre Antwort posten möchten, kann ich sie als Lösung markieren. Danke vielmals! – Nicolas

Verwandte Themen