javascript - 如何在 React Native 中测试删除查询 Firebase/mockFirebase?
问题描述
我正在使用 React Native 和 Firebase 构建一个应用程序,并且我想使用 jest/firestore-jest-mock 测试删除功能。
我的问题是当我尝试这个查询时它总是返回 True。
"devDependencies": {
"@babel/core": "~7.9.0",
"firestore-jest-mock": "^0.7.1",
"jest-expo": "^40.0.1",
},
这是我的代码:
// Fake DATABASE
mockFirebase({
database: {
categories_costs: [{ id: 'key1',title: 'test1', icon: 'icontest1' }],
},
});
const firebase = require('firebase');
const db = firebase.firestore();
// test with wrong ID
test('Delete Document In categories_income', () => {
return db.collection('categories_costs')
.doc('keyNoExist')
.delete()
.then(() => {
//Always get into this part
console.log("Document successfully deleted!");
}).catch((error) => {
console.error("Error removing document: ", error);
});
});
尽管 id 是错误的,但测试是这样正确通过的。
解决方案
这是我的解决方案,在这部分它检查文档是否存在,然后将其删除(假数据)。
test('Delete categories_income Bykey', () => {
const ref = db.collection('categories_income').doc('key1');
return ref.get().then((doc) => {
if (doc.exists) {
ref.delete().then(() => {
expect(mockCollection).toHaveBeenCalledWith('categories_income');
}).catch((error) => {
expect(error).toEqual('error')
});
}else{
throw new Error("Document Does Not Exist")
}
});
});
推荐阅读
- microcontroller - stm32f303k8比较器寄存器地址?
- c++ - 如何在没有任何库但来自 C++ 的标准库的情况下处理图像中的边缘像素?
- django - 中间件设置
- javascript - 无法在本机反应中的两个组件之间传递值
- android - 实现嵌套查看器的最佳方法
- azure - 使用 Azure Powershell 从组 AppRole 分配中获取 Azure AD 应用角色名称
- c++ - 了解 c++ 中 decltype 返回的内容
- python - Python按字母顺序将列表转换为字典
- react-native - 我如何更新或将徽章计数从组件传递到 Tab.Navigator。反应原生
- actionscript-3 - 如何创建随机名称选择器?动作脚本