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

React+Mobx应用中如何用Jest toThrow()测试catalogStore异常抛出?

测试React+Mobx中catalogStore的loadProducts异常场景

在React+Mobx应用里,我们需要验证catalogStore的loadProducts方法在数据获取失败时是否会正确抛出异常。下面是整理并补全后的测试代码,已经模拟了catalogService.get函数使其强制拒绝:

import catalogStore from './path-to-your-catalogStore';
import catalogService from './path-to-your-catalogService';

// 模拟catalogService模块,避免依赖真实API请求
jest.mock('./path-to-your-catalogService', () => ({
  get: jest.fn()
}));

describe("catalogStore", () => {
  describe("if the catalog fails to get the data", () => {
    beforeAll(() => {
      // 让get方法返回拒绝状态的Promise,模拟请求失败场景
      catalogService.get.mockRejectedValue(new Error('Failed to fetch products'));
    });

    it("should throw an error when loading products fails", async () => {
      const store = new catalogStore();
      
      // 断言异步方法会抛出指定异常
      await expect(store.loadProducts()).rejects.toThrow('Failed to fetch products');
    });
  });
});

关键细节说明:

  • 用jest.mock提前模拟catalogService,确保测试完全隔离,不依赖真实后端服务
  • 在beforeAll钩子中通过mockRejectedValue构造失败场景,让数据获取函数强制拒绝
  • 使用async/await配合expect(...).rejects.toThrow,这是测试异步函数异常的标准写法,能准确捕获并验证抛出的错误信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:26:25