【问题标题】:testing firebase function with jest用玩笑测试firebase功能
【发布时间】:2020-07-04 10:50:41
【问题描述】:

两天以来,我一直在尝试理解并为我的 firebase 功能编写测试。对于那个测试,我只想使用框架 Jest。 https://jestjs.io/

export const updateTipsPerFixture = functions.firestore.document('users/{userId}').onUpdate((change) => {
    const beforeTips: Tip[] = change.before.data() !== undefined ? change.before.data().tips : [];
    const afterTips: Tip[] = change.after.data() !== undefined ? change.after.data().tips : [];

    if (JSON.stringify(beforeTips) === JSON.stringify(afterTips)) {
        return new Promise(resolve => resolve('equal'));
    }

    if (afterTips.length === beforeTips.length) {
        return new Promise(resolve => resolve('same length'));
    }

    if (beforeTips.length < afterTips.length) {
        return new Promise(resolve => resolve('afterTips.length is longer'));
    }

    return false;
});

即使在我阅读了 Jest 文档并且无法弄清楚如何为我的用例模拟/存根 firebase 功能模块之后。

这就是我来的地方。是的,不是很远。

describe('updateTipsPerFixture', () => {
    test('it should return true when tips are equal', () => {
        expect(updateTipsPerFixture).toEqual(new Promise(resolve => 'equal'));
    });
});

我应该如何编写测试并模拟 firebase 模块?

【问题讨论】:

    标签: typescript firebase jestjs google-cloud-functions


    【解决方案1】:

    我找到的解决方案非常简单而且很好。可以通过调用函数 run() 并传递一些数据来测试该函数。见例子:

    describe('updateTipsPerFixture', () => {
        test('it should return true when tips are equal', () => {
            const mockedData = {
                before: {
                    data(): FirebaseFirestore.DocumentData | undefined {
                        return {tips: [{fixtureId: 123, teamId: 123} as Tip]}
                    }
                },
                after: {
                    data(): FirebaseFirestore.DocumentData | undefined {
                        return {tips: [{fixtureId: 123, teamId: 123} as Tip]}
                    }
                }
            } as Change<DocumentSnapshot>;
    
            const actual = updateTipsPerFixture.run(mockedData, null);
    
            return expect(actual).resolves.toEqual('equal');
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2018-09-25
      • 1970-01-01
      • 2020-10-08
      • 2020-12-15
      • 1970-01-01
      • 2021-02-10
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多