Не удается заставить тест SpyOn работать должным образом - PullRequest
0 голосов
/ 03 сентября 2018

Я не могу заставить мой тест работать по какой-то причине, и он продолжает выдавать ошибку:

Ожидаемый шпион isCurrentStatus будет равен true.

Вызываемая функция просто оценивает, равна ли переданная переменная текущему хранимому свойству status, и возвращает либо true, либо false. Ничего особенного ...

Тест

it('should return true if current status = status passed in', () => {
    const statusSpy = spyOn(component, 'isCurrentStatus');
    component.event = failedEvent;
    component.isCurrentStatus('failed');
    expect(statusSpy).toEqual(true);
  })

компонент

event: MyEvent;

isCurrentStatus(status: string): boolean {
    return this.event.status === status;
  }

UPDATE

Я только что переместил spyOn в раздел beforeEach() и теперь возвращает:

ожидается undefined равным true

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Вы можете создать spyOn для функции и проверить значение, которое она возвращает по-другому:

spyOn(component, 'isCurrentStatus').and.callThrough();
component.event = failedEvent;
const statusResult = component.isCurrentStatus('failed');
expect(statusResult).toBeTruthy();
0 голосов
/ 03 сентября 2018

Expected spy on isCurrentStatus to equal true. Это потому, что spyOn создает, на самом деле, spy. И вы пытаетесь что-то вроде expect(Spy).toEqual(Boolean);, поэтому вы получаете такую ​​ошибку.

expected undefined to equal true - вы получаете, потому что область действия beforeEach() не входит в область действия вашей тестовой функции (it())

Поскольку вы хотите проверить возвращаемое значение - вам не нужно шпионить здесь. Просто вызовите функцию и проверьте ее результат.

Шпион нужен, когда вам нужно проверить не возвращаемое значение, а что-то еще - например, это функция внедренной зависимости, но вы должны быть уверены, что она была вызвана. Итак, вы создаете шпиона. Или: вам нужно проверить, сколько раз была вызвана функция, какие параметры были переданы и т. Д. Или когда вам нужно смоделировать ее поведение.

0 голосов
/ 03 сентября 2018

попробуйте это, чтобы проверить возвращаемое значение

expect(component.isCurrentStatus('failed')).toEqual(true);

и вы можете проверить, был ли вызван метод или нет

const statusSpy = spyOn(component, 'isCurrentStatus').and.callThrough();
...
expect(statusSpy).toHaveBeenCalledTimes(1);

Вы можете проверить аргументы

expect(statusSpy).toHaveBeenCalledWith('failed')
...