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

时间:2019-04-13 09:47:46

标签: typescript jestjs

我使用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.

1 个答案:

答案 0 :(得分:0)

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

withArgs(…args)→→

指定用于对具有指定参数的间谍进行调用的策略

例如:

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

然后再次对不同的returnValue使用不同的spyOn

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