为什么测试变更数据不正确?

问题描述 投票:0回答:1

测试我的 gen2 onDocumentUpdate 函数。但函数中的变化数据并不如预期。有人能看到发生了什么事吗?

这是代码的精简版本:


import { onDocumentUpdated } from 'firebase-functions/v2/firestore';

export const onPrizeUpdate = onDocumentUpdated('prizes/{prize}', (event) => {
  const data = event.data.after.data();

  return data;
});

测试:

const functions = init(); // firstbase functions tests instance
const wrapped = functions.wrap(onPrizeUpdate); // wrapped function

describe('prize is pulled', () => {
  let change, beforeSnap, afterSnap;
  beforeEach(async () => {
    beforeSnap = functions.firestore.makeDocumentSnapshot(prize, `prizes/id`);
    afterSnap = functions.firestore.makeDocumentSnapshot(
      { ...prize, winner: user, winner_uid: user.uid },
      `prizes/id`
    );
    change = functions.makeChange(beforeSnap, afterSnap);
    await wrapped(change);
  });

  it('updates did_cakepull', async () => {
    // console.log('user', user);
    expect(user['show_1_did_cakepull']).toEqual(true);
  });
});

快照看起来像这样(部分)。我觉得不错。 “改变”对象对我来说也看起来不错。

{
  _fieldsProto: {
    we_id: {
      integerValue: 12054,
    },
    show_id: {
      integerValue: 45,
    },
    cakepull: {
      booleanValue: true,
    },
 // ..... more props
}

但奇怪的是。在实际函数中,event.data.after.data() 的值如下所示:

{
  aString: "foo",
  anObject: {
    a: "qux",
    b: "faz",
  },
  aNumber: 7,
}

此外,当在模拟器 UI 中手动更改文档时,函数中的数据符合预期......

有什么想法吗?谢谢!

编辑:这是 firebase 函数测试包装器(测试中的 #init 函数),也许设置不正确?

import firebaseFunctionsTest from 'firebase-functions-test';

const init = () => {
  return firebaseFunctionsTest({
    projectId: 'dev',
  });
};

export { init };
node.js firebase google-cloud-firestore google-cloud-functions
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.