Jest модульный тест не проходит при создании компонента - PullRequest
0 голосов
/ 08 июля 2019

Мои юнит-тесты проваливаются при шуткеЧаще всего они не проходят тест на создание компонента.У меня есть похожие тесты в моих модульных тестах Jasmine, и все они успешны.

Вот код для одного набора:

    class MockAuthenticationService {
      canAccessFeature(featureId: number) {
      return true;
     }
    }

interface TestSuite {
  fixture: ComponentFixture<TestComponent>;
  testComponent: any;
  myComponentInstance: any;
  myComponentDom: any;
  mockConfigDetailsInstance: any;
  panelWrapperInstance: any;
}

describe('Component Details', () => {
    let suite: TestSuite;
    beforeAll(() => { suite = <TestSuite>{}; });
    afterAll(() => { suite = null; });

    beforeEach((done) => {
      TestBed.configureTestingModule({
        imports: [WhCoreLibModule.forRoot()],
        declarations: [
          TestComponent,
          ItemDetailsComponent,
          DetailsComponent,
          WrapperComponent
        ],
        providers: [
          { provide: WhAuthenticationService, useClass: MockAuthenticationService },
        ],
        schemas: [NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA]
      }).compileComponents().then(() => {
        suite.fixture = TestBed.createComponent(TestComponent);
        suite.testComponent = suite.fixture.componentInstance;

        let myDebugElement = suite.fixture.debugElement.children[0];
        if (myDebugElement) {
          suite.myComponentInstance = myDebugElement.componentInstance;
          suite.myComponentDom = myDebugElement.nativeElement;
          let panelDebugEl = myDebugElement.query(By.directive(WrapperComponent));
          let configDebugEl = myDebugElement.query(By.directive(DetailsComponent));

          if (configDebugEl) {
            suite.mockDetailsInstance = configDebugEl.componentInstance;
          }
          if (panelDebugEl) {
            suite.panelWrapperInstance = panelDebugEl.componentInstance;
          }
        }

        suite.fixture.detectChanges();
        done();
      }).catch((err: string) => done.fail(err));
    });

    it('should create component instance', () => {
      expect(suite.myComponentInstance).toBeTruthy(); // Fails here
      expect(suite.mockDetailsInstance).toBeTruthy();
      expect(suite.panelWrapperInstance).toBeTruthy();
    });

    it('should pass collapsed param to WrapperComponent', () => {
      suite.testComponent.configCollapsed = true;
      suite.fixture.detectChanges();
      expect(suite.panelWrapperInstance.expanded).toBeFalsy();
      suite.testComponent.configCollapsed = false;
      suite.fixture.detectChanges();
      expect(suite.panelWrapperInstance.expanded).toBeTruthy();
    });

    it('should forward collapsedChange event from WrapperComponent', () => {
      spyOn(suite.testComponent, 'onConfigCollapsedChange');
      suite.panelWrapperInstance.onExpandStateChanged.emit(true);
      expect(suite.testComponent.onConfigCollapsedChange).toHaveBeenCalledWith(false);
      suite.panelWrapperInstance.onExpandStateChanged.emit(false);
      expect(suite.testComponent.onConfigCollapsedChange).toHaveBeenCalledWith(true);
    });

    it('should emit editItem event from WrapperComponent actionClicked Event', () => {
      spyOn(suite.testComponent, 'onEditItem');
      suite.panelWrapperInstance.onActionClicked.emit();
      expect(suite.testComponent.onEditItem).toHaveBeenCalled();
    });
  });

@Component({
  template: '<item-details [detailsInput]="details" ' +
    '[configCollapsed]="configCollapsed" (configCollapsedChange)="onConfigCollapsedChange($event)" ' +
    '(editItem)="onEditItem($event)"></item-details>'
})
export class TestComponent {
  details = <ItemDetailsInput>{
    basedOnConfigId: 0,
    // optionsData: [{ IsPaint: false, CategoryDesc: '' }]
  };
  configCollapsed: boolean;

  onConfigCollapsedChange(collapsed: boolean) {/**/}
  onEditItem() {/**/}
}

@Component({
  selector: 'item-configuration-details',
  template: '<div></div>'
})
class DetailsComponent {
  @Input() itemConfigurationDetailsParams: any;

Я на самом деле довольно новичок в модульном тестировании после обновления доangular 7 мы сделали, мне нужно убедиться, что юнит-тесты продолжают работать.

Версия jest такая же, как и до обновления:

"jest": "^23.6.0",
"jest-junit": "^6.4.0",
"jest-preset-angular": "^6.0.2",
"babel-jest": "^24.7.1",

Я искал по всемуИнтернет, но я в растерянности.У кого-нибудь есть идеи?Спасибо

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