2016-09-28 8 views
0

私はサガのテープテストをいくつか書きましたが、最も単純な例は同じ理由で一貫して失敗しています。単純なテープjsテストでreduxサガが失敗した不定

export function* clearUser(){ 
    yield* put({type: 'CLEAR_USER'}); 
} 

私のテープ試験も同様に簡単です:私は1つのラインのサガ持っ

test('clear user saga', (assert)=> { 
    const gen = clearUser(); 
    assert.deepEqual(
     gen.next().value, 
     put({type: 'CLEAR_USER'}), 
     'clear user should pass to reducer to remove user from state' 
    ) 

    assert.deepEqual(
     gen.next(), 
     { done: true, value: undefined }, 
     'clear user saga should complete' 
    ) 

    assert.end() 
}); 

しかし、最初のアサーションが失敗すると値が定義されていないと言う:

operator: deepEqual 
    expected: |- 
    { '@@redux-saga/IO': true, PUT: { action: { type: 'CLEAR_USER' }, channel: null } } 
    actual: |- 
    undefined 

私は」私がサガをインポートしていることを確認し、他のテストが動作しています、なぜこの簡単なテストは失敗しますか?

答えて

1

あなたのputエフェクトは、yieldエフェクトで、別のジェネレータに委譲しないでください。

比較yield*yield