2017-04-30 3 views
1

私はサガ内でcatchステートメントをテストしようとするときに問題があります。私は、コンソールに出力されたError: errorで以下のテストに失敗している、Mochaとchaiを使用しています。redux-sagaでtry-catchをテストします

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

が期待行が期待 'である必要はありません(generator.throw(エラー).VALUE).to.equal((置く{ タイプ:actions.LOGIN_FAIL、 'エラー' を}));' – BarthesSimpson

+0

か(タイプ:actions.LOGIN_FAIL、{message: 'error'} )))); – BarthesSimpson

答えて

1

はこのようにそれを試してみてください。

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

これは同じ結果をもたらします私の例として – Mantis

+0

は何のエラーメッセージですか? – andresmijares25

0

あなたのジェネレータは、エラーメッセージとアクションをディスパッチするが、あなたのテストにアクションペイロードがエラーオブジェクトであることを期待しています。あなたがそれを期待するように変更するならば、

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

それは動作するはずです。

関連する問題