类型错误:firestoreService.snapshot_不是函数



我一直在使用firebase函数测试来对我的函数进行一些测试。我有一些代码应该向firestore发布一件事,基本上与示例在实时数据库中显示的方式相同。示例:

exports.addMessage = functions.https.onRequest((req, res) => {
const original = req.query.text;
admin.firestore()
.collection('messages')
.add({ original })
.then(documentReference => res.send(documentReference))
.catch(error => res.send(error));
});

在我的测试中,我用sinon、mocha和chai伪造了一些基本功能。这是我当前的测试,它失败了,并显示错误消息:TypeError: firestoreService.snapshot_ is not a function

describe('addMessage', () => {
// add message should add a message to the database
let oldDatabase;
before(() => {
// Save the old database method so it can be restored after the test.
oldDatabase = admin.firestore;
});
after(() => {
// Restoring admin.database() to the original method.
admin.firestore = oldDatabase;
});
it('should return the correct data', (done) => {
// create stubs
const refStub = sinon.stub();
// create a fake request object
const req = {
query : {
text: 'fly you fools!'
}
};
const snap = test.firestore.makeDocumentSnapshot({ original: req.query.text }, 'messages/1234');
// create a fake document reference
const fakeDocRef = snap._ref;
// create a fake response object
const res = {
send: returnedDocRef => {
// test the result 
assert.equal(returnedDocRef, fakeDocRef);
done();
} 
};
// spoof firestore
const adminStub = sinon.stub(admin, 'firestore').get(() => () => {
return {
collection: () => {
return {
add: (data) => {
const secondSnap = test.firestore.makeDocumentSnapshot(data, 'messages/1234');
const anotherFakeDocRef = secondSnap._ref;
return Promise.resolve(anotherFakeDocRef);
}
}
}
}
});
// call the function to execute the test above
myFunctions.addMessage(req, res);
});
});

我的问题是我到底该怎么解决这个问题?

我之前有一个测试刚刚通过第一个快照和fakeDocRef,我的测试通过得很好,但一旦我用新的假文档引用解决了承诺,它就失败了。。。

任何帮助都将不胜感激!谢谢

有三种不同类型的调用,它们是不同的:

  1. 对集合进行操作
  2. 对文件进行操作
  3. 对查询结果进行操作

必须始终如一地使用它们。请参阅文档以查看对集合和文档的差异操作。

相关内容

  • 没有找到相关文章

最新更新