如何在 ts-mock 中模拟导入的函数

Posted

技术标签:

【中文标题】如何在 ts-mock 中模拟导入的函数【英文标题】:How to mock imported function in ts-mock 【发布时间】:2022-01-24 04:30:52 【问题描述】:

我是 typescript 的新手,并且在玩 aws-lambda。

我正在尝试对我的处理程序进行单元测试,因此我需要模拟服务类,以便它返回一些模拟数据

下面我有一个从域服务获取数据的简单函数。

处理程序:

服务:

测试:

当我使用npx mocha 运行测试时,它显示:

【问题讨论】:

【参考方案1】:

看起来您有一个函数调用,您需要在其中传递对模拟函数的引用:

mockito.when(mockedService.getAllDomain()).thenResolve([]);

应该是:

mockito.when(mockedService.getAllDomain).thenResolve([]);
                                       ^ Without the function call brackets ()

顺便说一句,在 mocha 中使用 sinon 之类的东西来模拟更习惯用语。我提到这一点是因为我不确定您找到的库是否适合模拟依赖项 - 我认为您需要重构代码以允许注入由 ts-mockito 创建的模拟。

【讨论】:

以上是关于如何在 ts-mock 中模拟导入的函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中模拟导入的pypi库使用的函数调用

如何模拟在同一文件中定义但未被测试方法导入的函数?

Jest - 模拟函数,从另一个文件导入

如何在nodejs Lambda中模拟不存在的文件导入

多次使用相同的模拟对象/数组时,如何在没有引用问题的情况下导入模拟数据以进行测试

jest.mock():如何使用工厂参数模拟 ES6 类默认导入