函数内的 Jasmine spyOn 函数和上次 fn 调用的 return 模拟值

Jasmine spyOn function within function and return mock value from last fn call

我正在尝试编写一个 Jasmine 测试,我在其中获得了如下对象结构:

class User {
   public getData(): void {
      return {
         getPersonalInfo: () => {
            ...
         }
      }
   }
}

通常,我将其称为 user.getData().getPersonalInfo()。现在,我想在调用 getPersonalInfo().

时监视此调用和 return 模拟信息响应

我尝试做的事情:

spyOn(user.getData, "getPersonalInfo").and.returnValue(...)

spyOn(user, "getData").and.callThrough().and.callFake(() => {... fake data ...} )

spyOn(user, "getPersonalInfo").and.callFake(() => {... fake data ...} )

但到目前为止,无论我尝试过什么,都没有用。

我怎样才能做到这一点?

您可以这样存档:

const getPersonalInfoSpy = jasmine.createSpy('getPersonalInfoSpy');
getPersonalInfoSpy.and.returnValue({}); // provide mock here
spyOn(user, "getData").and.returnValue({ getPersonalInfo: getPersonalInfoSpy})

不要忘记为 getPersonalInfoSpy;

提供适当的模拟