NodeJS中ES6导入导出与Jest单元测试报错问题求助
问题原因及解决思路
核心问题
你的quotationServices是一个工厂函数,它需要接收quotationRepository参数后,才会返回包含sum方法的对象。直接调用quotationServices.sum会报错,因为此时quotationServices本身不是返回的实例,而是那个工厂函数。
解决步骤
创建服务实例
在测试中,先传入一个模拟的quotationRepository(测试sum不需要用到仓库的实际方法),生成服务实例:import quotationServiceFactory from '../../../../../src/domain/financing/quotation/quotationServices.js'; // 创建模拟的repository,sum方法无需用到它的功能 const mockQuotationRepository = {}; const quotationServices = quotationServiceFactory(mockQuotationRepository);修改测试用例
使用生成的实例调用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
相关产品推荐
相关产品推荐

