Жасмин тест, функция не вызывается - PullRequest
0 голосов
/ 22 февраля 2019

Я тестирую валидатор, который делает вызов службе, если возвращается ноль, возвращается объект ошибки.

Я создал шпиона для службы с returnValue, котораяКажется, работает нормально, но мне трудно выполнить функцию проверки и вернуть значение.

Я закончил тем, что создал шпиона для функции, которую я тестирую, но я не думаю, чтоЯ должен делать.

Функция валидатора:

Он принимает службу в качестве параметра и использует внутренне

static require(service: Service): ValidatorFn {
   return (formGroup: FormGroup): { [key: string]: boolean } | null => {
      const checkedCount = state.currentCount();
      if (checkedCount === 0) {
          return  {
            'isNotChecked' : true
          };
        }
      return null;
    };
  }

Тест, который работает: Как я сказал, янеужели я не думаю, что мне следовало бы шпионить за функцией, которую я тестирую?

  it('should return error object when currentCount === 0', () => {
        spyOn(service, 'currentCount').and.returnValue(0);
        spyOn(ModValidation, 'require').and.returnValue({ 'isNotChecked' : true });
        service.currenCount();
        expect(ModValidation.require(service)).toEqual({ 'isNotChecked' : true });
    });

То, что я пробовал, но не работает:

  it('should return error object when currentCount === 0', () => {
        spyOn(service, 'currentCount').and.returnValue(0);
        const resp = ModValidation.require(service);
        service.currentCount();
        expect(resp).toEqual({ 'isNotChecked' : true });
    });

Я получаю

Expected Function to equal Object({ isNotChecked: true }).

1 Ответ

0 голосов
/ 22 февраля 2019

Дело в том, что ваш метод require в валидаторе - это функция, которая преобразует AbstractControl в результат валидации.

То, что вы хотели бы вызвать, выглядит примерно так:

it('currentCount 0', () => {
    const service = {currentCount: () => {}};
    spyOn(service, 'currentCount').and.returnValue(0);

    expect(CustomValidators.require(service)({} as any)).toEqual({
            'isNotChecked' : true
          });
  });

Я сделал Stackblitz для вас, чтобы проверить: Stabblitz

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...