【发布时间】:2020-03-11 00:34:48
【问题描述】:
我正在使用 firebase-admin 8.6.0 和 firebase-functions-test 0.1.6,它们在测试中支持 Firestore 时间戳(截至 0.1.5 https://github.com/firebase/firebase-functions-test/releases),但在尝试将它们与test.firestore.makeDocumentSnapshot 一起使用。
有人可以帮我理解我的实现中的错误吗?
import * as admin from 'firebase-admin';
admin.initializeApp();
const db = admin.firestore();
const settings = { timestampsInSnapshots: true};
db.settings(settings);
const timestamp = admin.firestore.FieldValue.serverTimestamp();
const testingTimestamp1 = admin.firestore.Timestamp.now();
const testingTimestamp2 = admin.firestore.Timestamp.fromDate(new Date);
import * as TestFunctions from 'firebase-functions-test';
const firebaseConfig = {
databaseURL: 'https://...HIDDEN...',
projectId: '...HIDDEN...',
storageBucket: '...HIDDEN...appspot.com',
}
const test = TestFunctions(firebaseConfig, 'service-account-dev.json');
const data({
timestamp,
testingTimestamp1,
testingTimestamp2,
});
const snap = test.firestore.makeDocumentSnapshot(data, path);
const wrapped = test.wrap(processImport);
await wrapped(snap, {params: testParams});
我无法让三个时间戳选项中的任何一个起作用。后一个我尝试在https://github.com/firebase/firebase-functions-test/pull/28 中向@the0rem 学习,但无济于事。我总是收到这个错误:
无法将 [object Object] 编码为 Firestore 值。本地测试尚不支持 Firestore 地理位置。`
【问题讨论】:
-
什么是
test?您是否错过了在某处显示导入? -
抱歉,@DougStevenson,我在编写问题时采取了一些捷径,因为我正在从多个文件中合成片段。我相信我现在拥有上面代码示例中的所有相关部分。
-
只是为了确保 - 这个问题的标题是 @firebase/testing,它适用于 Web 客户端 SDK,但 firebase-functions-test 适用于在 Cloud Functions 上运行的后端代码。如果标题不一致,你能编辑一下吗?
-
另外,如果您的问题确实与 firebase-functions-test 有关,请考虑在项目 GitHub 上发布错误报告。 github.com/firebase/firebase-functions-test
-
好指点。我已经更改了标题,并考虑过发布错误报告,但是看到已经完成并且看似已解决和关闭,我认为这只是我不了解如何正确实施的问题。因此这里的帖子。
标签: javascript firebase testing google-cloud-firestore firebase-admin