在本地进行单元测试时,工作部署的http触发的Firebase异步云功能会中断

时间:2019-07-09 18:34:31

标签: unit-testing google-cloud-functions sinon ava

我有HTTP触发的云函数“ getCategories”,该函数仅从firestore集合中检索一些文档。

如部署在Firebase日志中所示,它在部署时工作正常。 当我使用ava在本地“在线”运行同一功能时,该功能仅在等待文档收集时退出。

实际上,我错过了Firebase日志中出现的日志跟踪“之后”。 甚至单元测试中的res也没有任何JSON回复。

我真的不知道为什么会发生这种情况,但我想解决的问题是继续开发已经针对复杂的后台云功能完成的单元测试,并同步HTTP触发的功能。

我试图从节点v8切换到节点v10(当前处于Firebase测试版),没有结果。

我不顾一切地尝试删除所有数据库安全规则,因为知道数据库访问权限是管理员用户。也没有结果。

我删除了所有其他ava测试只是为了没有任何并发​​问题。

云功能是:

exports.getCategories = functions.region('europe-west1').https.onRequest(async (req, res) => {
  let cats;
  try {
    const categoriesRef = db.collection("categories").orderBy("order");
    console.log('before',new Date().getTime());
    const categories = await categoriesRef.get();
    console.log('after',new Date().getTime());
    cats = [];
    categories.forEach(category => {
      console.info('Got cat with id: ',category.id,', desc:',category.data().desc);
      cats.push({'id':category.id, 'd':category.data().desc});
    });
    res.set('Access-Control-Allow-Origin', '*').status(200).send(cats);
  } catch (e) {
    console.log('err:', e);
    res.set('Access-Control-Allow-Origin', '*').status(500).end();
  }
});

ava单元测试是:

ava('getCategories: no parameters', async t => {
  const req = { query: {text: 'pippo'} };
  const res = {send: sinon.stub()};

  console.log('start',new Date().getTime())
  await myFunctions.getCategories(req, res);
  console.log('stop',new Date().getTime())

  t.true(true);
});

firebase日志为:

  

7:21:47.862 PM getCategories函数执行耗时88 ms,状态码为304

     

7:21:47.861 PM getCategories得到了ID为1,desc:C的猫

     

7:21:47.861 PM getCategories得到了ID为3,描述为B的猫

     

7:21:47.861 PM getCategories得到了ID为2,描述为A的猫

     

7:21:47.861 PM 1562692907860之后的getCategories

     

7:21:47.780 PM在1562692907780之前获取分类

     

7:21:47.775 PM getCategories函数开始执行

,单元测试日志为:

  

ubuntu @ ubuntu:〜/ workspaces / workspace_firebase / dev-com / functions $ npm test --verbose

     

如果以ok结尾,则npm信息有效

     

npm动词cli ['/home/ubuntu/.nvm/versions/node/v10.15.3/bin/node',   npm动词cli'/home/ubuntu/.nvm/versions/node/v10.15.3/bin/npm',   npm动词cli'test',   npm动词cli'--verbose']

     

使用npm@6.9.2的npm信息

     

使用node@v10.15.3的npm信息

     

npm动词运行脚本['pretest','test','posttest']

     

npm信息生命周期函数@〜pretest:函数@

     

npm信息生命周期功能@〜测试:功能@

     

functions @ test / home / ubuntu / workspaces / workspace_firebase / dev-com / functions

     

nyc ava

     

⠦开始1562693063436

     

⠧1562693063439之前

     

⠙停止1562693063726

     

1个测试通过

     

...

     

npm动词出口[0,true]

     

npm计时npm在5986毫秒内完成

     

npm信息确定

0 个答案:

没有答案