问题描述
await cfdb.collection('users').doc(userAccount.uid).set({
email: 'email@domain.com',firstName: 'firstname',lastName: 'Lastname,});
我将如何为使用 jasmine 的单元测试创建一个 sinon 模拟?
更完整的上下文....
const { Firestore } = require('@google-cloud/firestore');
const cfdb = new Firestore();
// Create Firestore user document
try {
await cfdb.collection('users').doc('E7skP0IncSW7wkBxnrYFx6udzGH2').set({
email: 'email@domain.com',firstName: 'Firstname',lastName: 'Lastname',});
} catch (error) {
res.json({ success: false,payload: { message: 'Firebase User write error. ' + error } });
return;
}
// Success
res.json({ success: true,payload: { message: 'User created.',userAccount: userAccount } });
}
解决方法
您不会使用 sinon
来模拟这一点,您会使用 @firebase/rules-unit-testing
包来强制与 Firestore/RTDB 模拟器交互。
这是解决方案...
const collectionStub = sinon.stub(firebase.cfDB,'collection')
.get(() => {
return function() {
return {
doc: (path) => {
return {
set: () => [{user: 'mock-user-1'},{user: 'mock-user-2'}]
}
}
}
}
});