Как уменьшить котел и повторяющийся код при написании тестовых случаев - PullRequest
1 голос
/ 26 апреля 2020

Я пишу много котлов и повторяющихся кодов в каждом разделе describe моего app-component.spec.ts. Есть ли способ уменьшить его? Другая проблема заключается в том, что всякий раз, когда я пишу новый component, я должен явно добавлять ссылку на новый component в каждый describe. Например,

    describe('AppComponent Test suite', () => {

      let component: AppComponent;
      let fixture: ComponentFixture<AppComponent>;

      beforeEach((() => {
        TestBed.configureTestingModule({
          declarations: [
            AppComponent,
    ... //29 components need to be referrred her
          ],
          imports: [
            AppRoutingModule,
            QuillModule,
            BrowserModule,
            HttpClientModule,
            MatProgressBarModule,
            BrowserAnimationsModule,

           HttpClientXsrfModule.withOptions({cookieName: 'CJCsrfCookie', headerName: 'CJCsrfHeader'}),
            ReactiveFormsModule
          ],
          providers: [{provide: APP_BASE_HREF, useValue: '/'},
    ...//14 services need to be added here
        }).compileComponents();
      }));

      beforeEach(() => {
        fixture = TestBed.createComponent(AppComponent);
        component = fixture.componentInstance;
        fixture.detectChanges();
      });

      fit('should create the app', (async() => {

        expect(component).toBeTruthy();
      }));
...
});

Если я напишу еще один describe, мне придется снова написать все imports и declarations. Могу ли я избежать этого?

1 Ответ

1 голос
/ 28 апреля 2020

Кажется, сделать это довольно легко, если я не ошибаюсь!

Я просто импортирую AppModule. Для любого providers я хочу предоставить альтернативу, я просто упомяну это явно.

например.

beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [AppModule],
      providers: [
        {provide: UserManagementService, useClass: MockUserManagementService}, //mock user management service
        ],
    })
    .compileComponents();
  }));

Вышеуказанное заменяет

beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [//23 components. These in new implementation come from AppModule
      ],
      imports: [AppModule],
      providers: [//14 services. They also some now from AppModule,
        {provide: UserManagementService, useClass: MockUserManagementService}, //mock user management service
        {provide: APP_BASE_HREF, useValue: '/'}],
    })
    .compileComponents();
  }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...