Jasmine-undefined不是构造函数

问题描述 投票:0回答:1
export default {
  retrieve() {...},
  process: {
    getData(source) {
      return this.retrieve({id: source.id})
         .then((reply) => {
              source.reply = reply;
              return reply
          });
   }
 }
}

测试

describe("getData", () => {
    const source = { id: 1 };
    it("calls #retrieve", () => {
        spyOn(helpers, "retrieve").and.returnValue(PromiseSpy);
        helpers.process.getData(source);
        expect(helpers.retrieve).toHaveBeenCalled();
    });
});

错误:未定义不是评估this.retrieve({id:source.id})的构造函数。

有人可以帮助我解决我做错的事情吗?

javascript ecmascript-6 jasmine karma-jasmine jasmine2.0
1个回答
0
投票

我在stackblitz中添加了一个有效的示例,因此您可以使用它。如果要模拟函数,可以在Jasmine中使用“ and.callFake”。

spyOn(helpers, "fetch").and.callFake(
      () => new Promise((resolve, reject) => resolve({data: "mocked"}))
    );
const data = await helpers.getList(1);
expect(data).toBe("mocked"); 

这里是stackblitz的链接。 https://stackblitz.com/edit/jasmine-testing-c2nicd?file=src%2Fhelpers.spec.ts

© www.soinside.com 2019 - 2024. All rights reserved.