2016-08-03 5 views
2

Ich habe eine actionCreator-Methode, die ich Unit-Test durchführen möchte. Es macht einen Firebase-Aufruf und bei Erfolg oder fehlschlagen wird es 2 Methoden relativ zu versenden.Komponententest auf Redux, der einen Firebase-Aufruf beinhaltet

Es sieht etw wie folgt aus:

export function removeItem(itemId) { 
    return dispatch => { 
     return firebase.database().ref('items').child(itemId).remove() 
      .then(
       success => dispatch(updateList()), 
       error => dispatch(failRemovingItem(error)) 
      ); 
     }; 
} 

ich folgende bin das Beispiel von redux. http://redux.js.org/docs/recipes/WritingTests.html

Aber ich bin nicht in der Lage, den Firebase Anruf über Nock zu verspotten.

Hat jemand Erfahrung mit Unit-Tests ähnlich?

Antwort

0

Eines der Szenarien ist die Linie zu extrahieren:

firebase.database().ref('items').child(itemId).remove() 

an Helfer, zum Beispiel FireBasehelper.removeEntity (id) und dann können Sie leicht diese Helfer innerhalb Aktion Schöpfer verspotten durch folgende gemeinsame Praktiken. Ihr Code dann würde wie folgt aussehen:

export function removeItem(itemId) { 
    return dispatch => { 
     return Databasehelper.removeEntity(itemId) 
      .then(
       success => dispatch(updateList()), 
       error => dispatch(failRemovingItem(error)) 
      ); 
     }; 
} 

Im Helfer nur zurückkehren, was wir gerade so

function removeEntity(itemId) { 
    return firebase.database().ref('items').child(itemId).remove() 
} 
0

Danke für die Antwort extrahiert haben. Ich habe tatsächlich einen Helfer um den Firebase-Aufruf. Ich habe es nur der Einfachheit halber herausgenommen. Das Problem, das ich habe, ist, dass ich nicht weiß, wie ich die Handlung verspotten soll.

Verwandte Themen