Angular Spectator, не может использовать пользовательские сопоставления

#angular #unit-testing #angular-spectator #spectator

#angular #модульное тестирование #angular-spectator #spectator

Вопрос:

Я пытаюсь использовать spectator для тестирования моих угловых компонентов. Я хочу использовать один из пользовательских сопоставителей, но я получаю сообщение об ошибке Property 'toBeEmpty' does not exist on type 'JestMatchersShape<Matchers<void, Element>, Matchers<Promise<void>, Element>>' .

Компонент действительно прост, и это простой тест:

   import { FormControl } from '@angular/forms';
  import { Spectator, createComponentFactory } from '@ngneat/spectator';

  import { imports } from '../../shared.module';

  import { InputComponent } from './input.component';

  describe('InputComponent', () => {
    let spectator: Spectator<InputComponent>;
    const createComponent = createComponentFactory({
      component: InputComponent,
      imports: imports,
    });

    describe('label', () => {
      it('should not show when not passed', () => {
        spectator = createComponent({
          props: {
            control: new FormControl(),
          },
        });

        const matLabel = spectator.query('mat-label');

        expect(matLabel).toBeEmpty(); // <-- Error here
      });
    });
  });
  

Я прочитал документацию spectator и ничего не сказал об импорте пользовательских сопоставлений, а также о примерах в Интернете, в которых они не упоминают ни о чем, что нужно сделать перед их использованием.

Ответ №1:

Я решил свою проблему.

Я попытался импортировать пользовательские сопоставления следующим образом:

    import { toBeEqual } from '@ngneat/spectator'; 
  

Но я получал ту же ошибку. Чтение других ответов о издевательстве над маршрутизатором Angular с spectator
Я заметил импорт:

    import '@ngneat/spectator/jest';
  

Я не нашел инструкций об этом, чтобы использовать пользовательские сопоставления.

В любом случае, это решает мою проблему.