云函数可调用 [间接调用] test.wrapped(函数) vs [直接调用] function.run()

cloud function callable [indirect call] test.wrapped(function) vs [direct call] function.run()

test.wrapped(函数)function.run()有什么区别?在本地 运行ner 测试下,两者似乎都 运行ning 正常。我用的是 mocha,但我认为它也会 运行 以同样的方式开玩笑。

下面两种方法有什么区别?

1.直接调用:

.....
.....
.....
funcName.run({foo:"bar"}, { auth: { uid: "ABC" } });
.....
.....
.....

2。 [间接调用] 使用 wrap:

.....
.....
.....
const projectConfig = {
  projectId: 'my-project',
  databaseURL: 'https://my-project.firebaseio.com'
};
const test = require('firebase-functions-test')(projectConfig, './service-account-key.json');
wrapped = test.wrap(funcName);
expect(
        wrapped(
            { foo: "bar" },
            { auth: { uid: "ABC" } }
        )
).to.contain('foobar');
.....
.....
.....

我们是否需要使用 test.wrap() 来利用测试 运行ner 的额外功能?这也可以通过 async await 来实现,但是上面提到的使用起来会很方便。对于前。 eventually 来自 chai-as-promised 的承诺?

直接和间接(使用包装)调用之间的区别在于,使用包装函数的后一种方法利用了 Firebase Test SDK for Cloud Functions 的功能 - “firebase-functions-test”。其中一些功能是 -

  1. 提供在数据参数中构建自定义数据或示例数据的方法。

  2. 为包装函数生成默认 eventContextOptions(第 2 个)参数,以防未显式传入此参数。

您可以在 unit testing & corresponding API reference for Firebase Test SDK 的 Cloud Functions public 文档上阅读有关此主题的更多信息。