【发布时间】:2022-01-01 02:25:15
【问题描述】:
我想在 runTransaction 函数中模拟代码。
示例代码:
await admin.firestore().runTransaction(async transaction => {
const hubDocument = admin.firestore().collection("Acme").doc('4');
const hubData = (await transaction.get(hubDocument)).data();
newData = {
...hubData,
someAttribute: 'some new value'
};
transaction.update(hubDocument, newData);
})
我想模拟transaction,检查它是否用正确的数据etc.pp调用。
我设法模拟了firestore(),但不知道如何模拟transaction 参数。
【问题讨论】:
-
此上下文中的“事务”是
TransactionObject(runTransaction 还允许将TransactionOptionsObject 作为附加参数)。据我所知,您需要在事务中模拟的唯一参数是DocumentReferenceandDocumentData。我认为这不能完全回答你的问题,所以请告诉我我还能如何帮助你。 -
@fabc 我传递了 firebase 对象,所以我可以模拟它。但我仍然不知道如何模拟它以便 runTransaction 通过我的事务模拟。
-
也许你可以通过npm包npmjs.com/package/firestore-jest-mock#firestoretransaction找到解决方案
-
目前您的交易模拟是什么样的? (另外,@FiodorovAndrei 的出色建议)
标签: node.js google-cloud-firestore firebase-admin ts-mockito