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

如何修复jest+enzyme测试传对象props的React组件时uploadResp未定义错误

问题修复方案

错误根因

你将jest的beforeEach钩子函数错误放置在it测试用例内部,jest的生命周期钩子仅在describe作用域下、it用例外层定义时才会生效。当前写法中beforeEach不会提前执行,FileUploadRespData始终为初始的undefined值,传递给组件的uploadResp属性也为undefined,因此读取uploadResp.linesProcessed时触发报错。

修复方法

方案1:调整钩子函数位置

将beforeEach移到it块外层,修改后的FileUploadStatus.test.js代码如下:

import React from 'react';
import { shallow } from 'enzyme';
import FileUploadStatus from './FileUploadStatus';
import { expect, jest } from '@jest/globals';
import toJson from 'enzyme-to-json';
import { FileResponse } from '../../constants/mockdata';

describe('Page File upload status component', () => {
  const fn = jest.fn();
  let FileUploadRespData;

  beforeEach(() => {
    FileUploadRespData = {
      uploadResp: { ...FileResponse },
      fileHead: 'IRI File Upload Status:',
    };
  });

  it('Should test File upload status component', () => {
    const wrapper = shallow(<FileUploadStatus {...FileUploadRespData} />);
    expect(wrapper).toMatchSnapshot();
  });
});

方案2:删除不必要的钩子

如果当前describe下只有这一个测试用例,无需使用beforeEach,直接在it内部声明props即可,代码更简洁:

import React from 'react';
import { shallow } from 'enzyme';
import FileUploadStatus from './FileUploadStatus';
import { expect } from '@jest/globals';
import toJson from 'enzyme-to-json';
import { FileResponse } from '../../constants/mockdata';

describe('Page File upload status component', () => {
  it('Should test File upload status component', () => {
    const FileUploadRespData = {
      uploadResp: { ...FileResponse },
      fileHead: 'IRI File Upload Status:',
    };
    const wrapper = shallow(<FileUploadStatus {...FileUploadRespData} />);
    expect(wrapper).toMatchSnapshot();
  });
});

优化建议

可以给组件props添加默认值,避免线上环境因参数缺失导致页面报错:

// 修改FileUploadStatus.jsx的参数解构部分
function FileUploadStatus({ 
  fileHead = 'IRI File Upload Status:', 
  uploadResp = { linesProcessed: 0, invalidLineList: [] } 
}) {
  // 原有逻辑不变
}

内容的提问来源于stack exchange,提问作者swarna mohn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:36:04