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

使用Enzyme测试无渲染组件时出现ReferenceError:ProjectStore未定义

解决测试中ReferenceError: ProjectStore is not defined的问题

嘿,我一眼就瞅出问题所在了——你在测试代码里不小心覆盖了导入的ProjectStore类,还误用了静态方法的调用方式!

错误原因拆解

  1. 变量名冲突覆盖:在你的it测试块里,写了const ProjectStore = shallow(<ProjectStore />);,这行代码重新声明了一个和导入组件同名的变量,直接把原本的类给覆盖了。当你后面再调用ProjectStore.setLodingCount时,这个变量已经变成Enzyme渲染出的组件实例,而非原来的类,再加上作用域问题,就触发了ReferenceError。
  2. 静态方法调用错误:你的ProjectStore里的setLodingCount和getLodingCount都是静态方法,这类方法属于类本身,根本不需要通过组件实例调用,完全没必要用shallow去渲染组件。

修正后的测试代码

把测试代码改成这样就能正常运行了:

import React from 'react';
import ProjectStore from '../projectStore.js';

describe('<ProjectStore />', () => {
  it('should return loading count', () => {
    // 直接用导入的类调用静态方法,无需渲染组件
    ProjectStore.setLodingCount(2);
    expect(ProjectStore.lodingCount).toEqual(2);
  });
});

额外小提示

顺便提一句,你的代码里有个拼写错误:lodingCount应该是loadingCount(少了一个字母a),虽然这不是当前报错的原因,但后续可能会引发其他奇怪问题,建议把组件和测试里的这个拼写统一修正过来哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:52:30