Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 具有不同类型返回值的热模拟函数?_Typescript_Jestjs - Fatal编程技术网

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

Typescript 具有不同类型返回值的热模拟函数?,typescript,jestjs,Typescript,Jestjs,我使用Jest在NodeJ上编写单元测试。有一种方法可以返回一个实体或实体数组。当我试图模拟这个方法的返回值时,我只能传递数组,但需要一个实体 npm我开玩笑打字 const manager = new EntityManager(null); const sale = new Sale(); jest.spyOn(manager, 'create').mockReturnValue(sale); 最后一个字符串导致错误: 类型为“Sale”的参数不可分配给类型为“{}[]”的参数。类型“

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

npm我开玩笑打字

const manager = new EntityManager(null);
const sale = new Sale();
jest.spyOn(manager, 'create').mockReturnValue(sale);  
最后一个字符串导致错误:
类型为“Sale”的参数不可分配给类型为“{}[]”的参数。类型“Sale”缺少类型“{}[]”中的以下属性:length、pop、push、concat和其他26个属性。

您可以使用withArgs实现这一点

带args(…args)→

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

例如:

然后再次使用不同的spyOn,以获得不同的返回值

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

你为什么要这么做?像同源函数一样进行模拟返回
mockReturnValue([sale])
,或强制返回值
.mockReturnValue(按任何方式销售)
Origin方法
EntityManager.create
可以同时返回:
[sale]
sale
。使用
spyOn(manager,'create')。使用args(saleDto)。mockReturnValue(sale)
I get
属性“withArgs”在类型“Spy”上不存在。
确保您使用的是jasmine导入的spyOn
spyOn(something, 'func').withArgs(arg2).returnValue(arrayValue);