Болезненный юнит-тест В В ANGULAR / Жасмин - PullRequest
0 голосов
/ 21 февраля 2020

На самом деле очень сложно настроить модуль тестирования для моих модульных тестов в angular. Проблема в том, что у меня нет простого способа узнать, какие у меня зависимости, поэтому я запускаю карму с помощью теста ng. Затем я вижу компоненты, модули или службы, отсутствующие на странице ошибок. Я добавляю недостающие зависимости. Запустите снова тест NG. и др c. Ошибка. Добавьте недостающие ...

Это пример зависимостей, которые мне нужны для некоторых модульных тестов:

TestBed.configureTestingModule({
  declarations: [TestedComponent, X, Y, Z, A, B, C, D, E,F, G, H,I,J, K,L,M,N,O,P,Q,R,S,T,U,V,W, A2],
  imports: [HttpClientTestingModule, TranslateModule.forChild(), TooltipModule, CheckboxModule, FormsModule, ReactiveFormsModule, KeyFilterModule,
    DropdownModule, MultiSelectModule, CalendarModule, InputMaskModule, BlockUIModule, OverlayPanelModule, ProgressSpinnerModule,
    AutoCompleteModule],
  providers: [
    TranslateStore,
    {provide: XProvider, useFactory: () => createXServiceDummy()},
    DateTimeFormatPipe,
    {provide: YService, useValue: createYServiceServiceDummy()}
   ]
}).compileComponents();

Мне может понадобиться 1 час, чтобы подготовить все необходимые зависимости !!! Это безумие!

Что я делаю не так по вашему мнению? Как вы делаете это в своих проектах? Это также усложняет ситуацию, если мне нужно добавить шпионов для моих услуг !!

Спасибо!

1 Ответ

0 голосов
/ 21 февраля 2020

Для всех дочерних компонентов вы должны предоставить компоненты-заглушки вместо фактических компонентов https://angular.io/guide/testing#stubbing -unneeded-components . Таким образом, вам не нужно будет предоставлять зависимости этих дочерних компонентов или других больших дочерних компонентов, и вы сможете сосредоточиться только на текущих зависимостях компонентов.

Кроме того, для компонентов-заглушек вы можете использовать эту библиотеку https://www.npmjs.com/package/ng-mocks, что действительно сокращает синтаксис.

И если вы уже делаете это, и у вас все еще так много дочерних компонентов в одном компоненте, возможно, вам следует сгруппировать их вместе.

...