首页 > 解决方案 > Jest 无法读取未定义对象的属性

问题描述

在 React Native 中,我创建了一个theme.js文件,其中有一些函数可以根据公司的设计系统获取我的颜色。

// theme.js

const PRIMARY_COLORS = {
  900: '#000000',
  800: '#003030',
  700: '#004040',
  600: '#006060',
  500: '#00A090',
  400: '#00C0A0',
  300: '#00E0D0',
  200: '#C0FFF0',
  100: '#E0FFF0',
};

export function _primaryColor(code) {
  return PRIMARY_COLORS[code];
}

当使用 React 的默认测试运行 jest 时,它会抛出一个错误,指出PRIMARY_COLORS未定义。

// App-test.tsx

import 'react-native';
import React from 'react';
import App from '../App';
import renderer from 'react-test-renderer';

jest.useFakeTimers();

it('renders correctly', async () => {
  renderer.create(<App />);
});

如果对象在函数内部,则测试将正确运行,但这意味着每次函数运行时都会实例化对象。

有没有办法解决这个问题?

标签: reactjsreact-nativejestjs

解决方案


好像您在 App 组件中使用了 theme.js,所以在您的 App 的测试文件中模拟了 theme.js 文件,这应该可以修复错误。


推荐阅读