How to test `functions.https.onCall` firebase cloud functions locally?

后端 未结 6 721
悲哀的现实
悲哀的现实 2020-12-01 07:42

I can\'t seem to find the solution for this in the Firebase Documentation.

I want to test my functions.https.onCall functions locally. Is it possible usi

6条回答
  •  庸人自扰
    2020-12-01 08:21

    Although the official Firebase Cloud Function docs have not yet been updated, you can now use firebase-functions-test with onCall functions.

    You can see an example in their repository.

    I have managed to test my TypeScript functions using jest, here is a brief example. There are some peculiarities here, like import order, so make sure to read the docs :-)

    /* functions/src/test/index.test.js */
    /* dependencies: Jest and jest-ts */
    
    const admin = require("firebase-admin");
    jest.mock("firebase-admin");
    admin.initializeApp = jest.fn(); // stub the init (see docs)
    const fft = require("firebase-functions-test")();
    
    import * as funcs from "../index";
    
    // myFunc is an https.onCall function
    describe("test myFunc", () => {
      // helper function so I can easily test different context/auth scenarios
      const getContext = (uid = "test-uid", email_verified = true) => ({
        auth: {
          uid,
          token: {
            firebase: {
              email_verified
            }
          }
        }
      });
      const wrapped = fft.wrap(funcs.myFunc);
    
      test("returns data on success", async () => {
        const result = await wrapped(null, getContext());
        expect(result).toBeTruthy();
      });
    
      test("throws when no Auth context", async () => {
        await expect(wrapped(null, { auth: null })).rejects.toThrow(
          "No authentication context."
        );
      });
    });
    

提交回复
热议问题