gpt4 book ai didi

javascript - 单元测试 firebase 函数 : how to stub firebase-admin sdk

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:10:59 25 4
gpt4 key购买 nike

在 index.js 中,我有以下内容

exports.write = functions.https.onRequest((req, res) => {
admin.database()
.ref(`xxx/yyy`)
.push()
.set({timestamp: admin.database.ServerValue.TIMESTAMP});
res.status(200).end();
});

在我的 test.js 中,我 stub admin.database() 如下:

const refStub = sinon.stub();
setStub = sinon.stub();
refStub.withArgs('xxx/yyy').returns({push: () => ({key: 'fakeKey', set: setStub})});
databaseStub = sinon.stub(admin, 'database').get(() => {
return () => {
return {ref: refStub};
};
});

当我运行测试时,出现以下错误 TypeError: Cannot read property 'TIMESTAMP' of undefined。如何修复此错误或将调用 stub 到 admin.database.ServerValue.TIMESTAMP?谢谢。

最佳答案

在 JavaScript 中,函数可以有属性。

> function x() {}
undefined
> x
[Function: x]
> x.prop = 1
1
> x
{ [Function: x] prop: 1 }
>

有了这些知识, stub admin.database 就像

var databaseStub = sinon.stub(admin, 'database').returns({ref: refStub});
//monkey patch database()'s property
admin.database.ServerValue = {TIMESTAMP: '1111'};

归功于 Doug Stevenson感谢您在 firebase 松弛 channel 上向我指出。谢谢道格!

关于javascript - 单元测试 firebase 函数 : how to stub firebase-admin sdk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47939456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com