TypeScript - 如何模拟具有不同返回值类型的函数?
我在 NodeJS 上使用 Jest 编写单元测试。有一个方法可以返回一个实体或实体数组。当我尝试模拟这个方法的返回值时,我只能传递数组,但我需要一个实体。
npm i jest typeormconst manager = new EntityManager(null);
const sale = new Sale();
jest.spyOn(manager, 'create').mockReturnValue(sale);
最后一个字符串导致错误:类型 'Sale' 的参数不可分配给类型 '{}[]' 的参数。类型 'Sale' 缺少类型 '{}[]' 的以下属性:length、pop、push、concat,以及其他 26 个属性。
答案#1
你可以使用 withArgs 来实现这一点,
withArgs(…args) →
指定用于调用具有指定参数的间谍的策略
例如:
spyOn(something, 'func').withArgs(arg1).returnValue(obj);
然后又用不同的 returnValue 对 spyOn 进行不同的设置
spyOn(something, 'func').withArgs(arg2).returnValue(arrayValue);
