2016-08-03 63 views
2

我有一个actionCreator方法,我希望对其进行单元测试。它会进行一次firebase调用,如果成功或失败,它会相对调度两种方法。对涉及火力点调用的redux进行单元测试

看上去某事像这样:

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

我下面从终极版的例子。 http://redux.js.org/docs/recipes/WritingTests.html

但我不能通过nock来模拟firebase调用。

有没有人有类似单元测试的经验?

回答

0

其中一个场景是提取行:

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

来帮手,例如FireBasehelper.removeEntity(ID),然后你可以很容易地通过以下常见的做法嘲笑行动的创建者这里面帮手。然后,您的代码应该是这样的:

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

在帮助你只回我们刚才提取所以

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

感谢您的答复。实际上,我在Firebase电话周围做了一名帮手。为了简单起见,我把它拿出来了。我遇到的麻烦是我不知道如何嘲笑这个动作。