2017-11-27 1 views
0

i Laich Block mit Scherz testen, testen will ... Ich habe einen Generator in Block und before Ich überprüfe durch
generator.next() Funktion, wie diesWie mein redux Saga Laich Codeblock

beforeEach(() => { 
     generator = saga.postCompare(); 
    }); 

und mein Code wie diese

export function* LoadData() { 
     let someVariable; 
     try { 
     for (let index = 0; index < 3; index += 1) { 
      yield spawn(loadUserData, varaiable1, variable2); 
     } 
    } 
    } 

    export function* loadUserData(Prop1, Prop2) { 
     try { 
     const userData = yield call(serverManager.fetch1,prop1, prop2); 
     const isUserSelected = yield* isUserSelected(); 
     if (!isUserSelected) { 
      return; 
     } 
     yield put(
      Actions.onRequestSucceededForUser(userData.data.value, prop1), 
     ); 
     } 
    } 

Antwort

0

ich will Laich Block testen Scherz mit

Vielleicht ist die einfachste Lösung für den Test redux-saga Generatoren akzeptiert - nur per Definition, wie sie funktionieren, und ohne etwas zu verspotten. Also, jede saga ist nur Generator-Funktion, die Kontrollfluss zur Elternfunktion bei jedem yield Operator liefert. Auch saga-effects in Fakten nichts tut - nur spezielle Form Objekt erstellen, die von redux-saga internem Prozess-Manager (https://github.com/redux-saga/redux-saga/blob/master/src/internal/io.js)

So akzeptabel ist, können Sie leicht unter-Test saga Funktion von Testläufer laufen und führen Behauptungen für zurückgegebene Aktionen , wie folgt aus:

const saga = LoadData(); 
assert(saga.next()).to.be.deep.equal(spawn(loadUserData, varaiable1, variable2)) 
assert(saga.next()).to.be.deep.equal(spawn(loadUserData, varaiable1, variable2)) 
assert(saga.next()).to.be.deep.equal(spawn(loadUserData, varaiable1, variable2)) 

Auf diese Weise Funktion loadUserData wird nicht ausgeführt, und wirkt sich auch auf Descriptor Objekte

erstellt wird