Жасмин - undefined не является конструктором - PullRequest
0 голосов
/ 02 марта 2020
export default {
  retrieve() {...},
  process: {
    getData(source) {
      return this.retrieve({id: source.id})
         .then((reply) => {
              source.reply = reply;
              return reply
          });
   }
 }
}

Test

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

Ошибка: undefined не является конструктором, оценивающим this.retrieve ({id: source.id}).

Может кто-нибудь помочь с тем, что я могу делать неправильно?

1 Ответ

0 голосов
/ 02 марта 2020

Я добавил рабочий пример в stackblitz, чтобы вы могли поиграть с ним. Если вы хотите смоделировать функцию, вы можете использовать «and.callFake» в Jasmine.

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

...