我有一个actionCreator方法,我想进行单元测试。它将进行firebase调用,如果成功或失败,它将相对调度2个方法。
它看起来像这样:
export function removeItem(itemId) {
return dispatch => {
return firebase.database().ref('items').child(itemId).remove()
.then(
success => dispatch(updateList()),
error => dispatch(failRemovingItem(error))
);
};
}
我正在关注redux的例子。 http://redux.js.org/docs/recipes/WritingTests.html
但是我无法通过nock模拟firebase调用。
有没有人有类似测试类似单位的经验?
答案 0 :(得分: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()
}