You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何Mock@react-native-firebase/remote-config?调用setDefaults时报错

问题描述

尝试Mock npm库@react-native-firebase/remote-config模块时,持续收到如下错误:

Test suite failed to run

TypeError: (0 , _remoteConfig.default)(...).setDefaults is not a function

Mock代码如下:

jest.mock("@react-native-firebase/remote-config", () => ({
  __esModule: true,
  default: () => ({
    remoteConfig: jest.fn(() => ({
      setDefaults: jest.fn(),
    })),
  }),
}));

调用代码如下:

import remoteConfig from '@react-native-firebase/remote-config';

// set defaults
remoteConfig().setDefaults(firebaseRemoteConfig);

// fetch remote config
.
.
.

显然Mock写法有误,但不清楚问题出在哪里。

问题分析与解决

你的Mock结构匹配错误——调用remoteConfig()后,代码期望返回的实例直接拥有setDefaults方法,但当前Mock中,default对应的函数返回的是一个包含remoteConfig方法的对象,而非直接带setDefaults的实例。

正确的Mock应该让default对应的函数直接返回包含setDefaults的对象,因为你的业务代码是remoteConfig().setDefaults(...),即导入的remoteConfig函数执行后,返回的实例本身就具备setDefaults方法。

修改后的Mock代码:

jest.mock("@react-native-firebase/remote-config", () => ({
  __esModule: true,
  default: jest.fn(() => ({
    setDefaults: jest.fn(),
    // 后续若需Mock其他方法(如fetch、activate),可直接在此添加
    fetch: jest.fn(),
    activate: jest.fn()
  })),
}));

修改后,调用remoteConfig()会直接得到带有setDefaults方法的Mock对象,即可解决报错问题。

内容的提问来源于stack exchange,提问作者Jaichand Khatik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:30:51