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

NodeJS中ES6导入导出与Jest单元测试报错问题求助

问题原因及解决思路

核心问题

你的quotationServices是一个工厂函数,它需要接收quotationRepository参数后,才会返回包含sum方法的对象。直接调用quotationServices.sum会报错,因为此时quotationServices本身不是返回的实例,而是那个工厂函数。

解决步骤

  1. 创建服务实例
    在测试中,先传入一个模拟的quotationRepository(测试sum不需要用到仓库的实际方法),生成服务实例:

    import quotationServiceFactory from '../../../../../src/domain/financing/quotation/quotationServices.js';
    
    // 创建模拟的repository,sum方法无需用到它的功能
    const mockQuotationRepository = {};
    const quotationServices = quotationServiceFactory(mockQuotationRepository);
    
  2. 修改测试用例
    使用生成的实例调用sum方法即可:

    describe('sum module', () => {
      test('adds 1 + 2 to equal 3', () => {
        expect(quotationServices.sum(1, 2)).toBe(3);
      });
    });
    

额外说明

如果后续要测试getQuotations方法,再给mockQuotationRepository添加模拟的runComputation方法即可,示例:

const mockQuotationRepository = {
  runComputation: jest.fn().mockResolvedValue([/* 模拟返回的报价数据 */])
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:05:36