热门模拟具有不同类型返回值的函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了热门模拟具有不同类型返回值的函数?相关的知识,希望对你有一定的参考价值。

我使用Jest在NodeJS上编写单元测试。有一种方法可以返回一个实体或一组实体。当我尝试模拟此方法的返回值时,我只能传递数组,但需要一个实体。

npm i jest typeorm

const manager = new EntityManager(null);
const sale = new Sale();
jest.spyOn(manager, 'create').mockReturnValue(sale);  

最后一个字符串会导致错误:Argument of type 'Sale' is not assignable to parameter of type '{}[]'. Type 'Sale' is missing the following properties from type '{}[]': length, pop, push, concat, and 26 more.

答案

您可以使用withArgs实现此目的,

withArgs(参数... args)→

指定用于调用具有指定参数的spy的策略

例如:

spyOn(something, 'func').withArgs(arg1).returnValue(obj);

然后再次spyOn与不同的returnValue

spyOn(something, 'func').withArgs(arg2).returnValue(arrayValue);

以上是关于热门模拟具有不同类型返回值的函数?的主要内容,如果未能解决你的问题,请参考以下文章

返回参数被发送到 Mockery 模拟函数?

postgres:具有无类型返回值的函数

嘲弄:测试具有不同返回值的链式方法调用(此处:Symfony ProcessBuilder)

具有布尔返回值的 pl/sql 函数的 OracleType?

JAVA语言中 有返回值的方法和无返回值的方法有啥区别啊 请举例子说明!!

具有默认参数值的打字稿条件返回类型