我有一个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.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()
}