首页 > 解决方案 > 模拟开火功能配置 - 不拿起条纹键

问题描述

我正在使用火力功能。它适用于部署,但现在我已经编写了单元测试。它说:

functions.config().stripe.secret;// ( Cannot read property 'secret' of undefined)

我知道对于测试,您需要设置一个 mockConfig。

我使用 config.ts 来配置我的功能(这是发生错误的地方)

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();

//init cloud firestore db
export const db = admin.firestore();
const settings = { timestampsInSnapshots: true };
db.settings(settings)

console.log(functions.config().stripe);
export const stripeSecret = functions.config().stripe.secret;


import Stripe from 'stripe';
export const stripe = new Stripe(stripeSecret, {
    apiVersion: '2020-08-27',
  });

对于测试,我有一个 test-config.ts,我在单元测试中引用它,如下所示:

import { fun } from './test-config';
fun.cleanup;

在我的 test-config.ts 我有这个(敏感信息已编辑)

import TestFunctions from 'firebase-functions-test';
const firebaseConfig = {
    apiKey: "...lala...",
    authDomain: "...lala...",
    databaseURL: "...lala...",
    projectId: "...lala...",
    storageBucket: "...lala...",
    messagingSenderId: "...lala...",
    appId: "...lala...",
    measurementId: "...lala..."}

const envConfig = { stripe : { secret : 'sk_test...lalala...' }};

const fun = TestFunctions(firebaseConfig, 'service-account.json');
fun.mockConfig(envConfig);


export { fun }

任何想法为什么我的测试中的配置没有被选中。我在开玩笑。

标签: angularfunctiontestingjestjsmocking

解决方案


我能够通过确保解决它

import { fun } from './test-config';
fun.cleanup;

在顶部。

和,

"esModuleInterop": true

在 compilerOptions 下的 tsConfig.json 中。


推荐阅读