Устранение неполадок модульного тестирования в Карма-Жасмин для функции .sort () в Angular - PullRequest
0 голосов
/ 24 октября 2019

У меня есть блок кода, написанный на Angular:

this.selectedData.sort((a, b) => {
        if (query === 'poll' && (a[query] === null || b[query] === null)) {
          return a[query] === null ? 1 : -1;
        } else if (query === 'submit') {
          return moment(a[query]).isBefore(moment(b[query])) ? 1 : -1;
        } else {
          return b[query].localeCompare(a[query]);
        }
});

Я попытался написать callFake для функции сортировки, как показано ниже:

spyOn(selectedData, 'sort').and.callFake((a, b) => {
     expect(query).toBe('poll');
});

Но покрытие кода показывает, это не происходит внутри функционального блока сортировки. Есть ли другой способ написания тестовых случаев. Я также пытался использовать callThrough (), и он показывает мне тот же результат.

1 Ответ

1 голос
/ 24 октября 2019

spyOn устанавливает шпиона на существующий объект, но не вызывает указанный метод. При связывании шпиона с and.callFake все вызовы шпиона будут делегироваться предоставленной функции вместо метода объекта. Вам нужно ...

// Install spy (without delegating)     
spyOn(selectedData, 'sort');

// Invoke the object's method
const result = selectedData.sort(...);

// Compare actual result with expected result
expect(result).toBe(<expectedResult>);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...