Функция тестирования в том же файле называется - PullRequest
0 голосов
/ 29 августа 2018

У меня есть 2 функции, где одна вызывает другую, а другая возвращает что-то, но я не могу заставить тест работать.

Использование expect(x).toHaveBeenCalledWith(someParams); предполагает использование шпиона, но я не знаю, как шпионить за функцией в том же файле ...

Ошибка:: ожидал шпиона, но получил функцию.

Использование: wait (). ToHaveBeenCalledWith (... arguments)

Example.ts

doSomething(word: string) {
   if (word === 'hello') {
      return this.somethingElse(1);
   }
   return;
}

somethingElse(num: number) {
   var x = { "num": num };
   return x;
}

Example.spec.ts

fake = {"num": "1"};

it('should call somethingElse', () => {
    component.doSomething('hello');
    expect(component.somethingElse).toHaveBeenCalledWith(1);
});

it('should return object', () => {
    expect(component.somethingElse(1)).toEqual(fake);
});

1 Ответ

0 голосов
/ 29 августа 2018

В вашем Example.spec.ts просто добавьте spyOn(component, 'somethingElse'); в качестве первой строки вашего теста it('should call somethingElse ...:

fake = {"num": "1"};

it('should call somethingElse', () => {
    // Add the line below.
    spyOn(component, 'somethingElse');
    component.doSomething('hello');
    expect(component.somethingElse).toHaveBeenCalledWith(1);
});

it('should return object', () => {
    expect(component.somethingElse(1)).toEqual(fake);
});

Ожидаемый метод нуждается в Spy в качестве параметра при использовании до toHaveBeenCalledWith (согласно документации Jasmine ).

...