开玩笑模拟一次实现,测试不会 运行 typescript 错误

jest mocking implementation once, tests won't run typescript errors

所以我有一个函数,它接受三个参数,如果我尝试监视它并使用 mockImplementationOnce 我得到各种打字稿错误,如何使用这个函数而不出现错误?

这运行良好,只有一个参数,回调。

const people = {
  person: person,
};

function person(cb: any) {
  const person = {
    age: 'frank',
    name: 'bob',
  };
  return cb(person);
}

const clientSpy = jest.spyOn(people, 'person');
clientSpy.mockImplementationOnce(cb => cb('bob'));

但是如果我为 person 函数提供一些参数,我会遇到各种错误。

const people = {
  person: person,
};

function person(name: string, age: string, cb: any) {
  const person = {
    age,
    name,
  };
  return cb(person);

const clientSpy = jest.spyOn(people, 'person');
clientSpy.mockImplementationOnce(("james", "age", cb) => cb('bob'));

错误的屏幕截图,我应该怎么做才能让它正常工作。

mockImplementationOnce 函数的第一个参数是一个回调,它是实际调用的模拟实现(a.k.a 另一个函数)。 TypeScript 在这里抱怨的原因是因为您在模拟函数参数的位置提供了字符串文字 - "james", "age" 这相当于做:

function bob("james", "age", cb) => {}

无效。

您需要做的是在实际函数中重复您拥有的参数,然后使用模拟值调用回调,如下所示:

clientSpy.mockImplementationOnce((name: string, age: string, cb: any) => cb('bob'));