2017-11-08 9 views
0

Angular CLI를 사용하고 있습니다. 그것은 WebPack과 함께 Karma Jasmine을 구현합니다. PrimeNg UI 라이브러리 컨트롤이 포함 된 구성 요소가 있습니다. p- 데이터 테이블 (그리드), p-confirmDialog (삭제 확인 대화 상자) 및 p- 대화 상자 (창)이 포함 된 하위 구성 요소가 있습니다. 내 테스트는 다음과 같은 이유로 실패Angular PrimeNg UI 라이브러리가 Jasmine DynamicTestModule과 충돌합니다.

실패 : SharedModule 및 DynamicTestModule : 유형 헤더 2 개 모듈의 선언의 일부입니다! SharedModule 및 DynamicTestModule을 가져 오는 상위 모듈로 헤더를 이동하는 것을 고려하십시오. 또한 내보낼 새 NgModule을 만들고 헤더를 포함하면 NgModule을 SharedModule 및 DynamicTestModule로 가져올 수 있습니다.

헤더는 primeng/components/common/shared 및 DynamicTestModule에 선언됩니다. 나는 이것들 중 하나도 만들지 않았다. 내가 뭘해야하니?

답변

0

해결했습니다! TestBed.configureTestingModule의 선언에서 머리글과 바닥 글을 제거했습니다.

// =========================================================================== 
import { async, ComponentFixture, TestBed, inject, fakeAsync, tick } from '@angular/core/testing'; 
import { FormsModule, ReactiveFormsModule, NgForm } from '@angular/forms'; 
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 
import { Http, ConnectionBackend, BaseRequestOptions, Response, ResponseOptions } from '@angular/http'; 
import { MockBackend } from '@angular/http/testing'; 
import { Observable } from 'rxjs/Rx'; 
// 
import { DataTableModule } from '../../../../node_modules/primeng/components/datatable/datatable'; //primeng/components/datatable/datatable'; 
import { DataTable } from '../../../../node_modules/primeng/components/datatable/datatable'; 
import { Dialog } from '../../../../node_modules/primeng/components/dialog/dialog'; 
import { ConfirmDialog } from '../../../../node_modules/primeng/components/confirmdialog/confirmdialog'; 
import { Header, Footer } from '../../../../node_modules/primeng/components/common/shared'; 
import { ButtonModule } from '../../../../node_modules/primeng/components/button/button'; 
import { ConfirmationService } from '../../../../node_modules/primeng/components/common/confirmationservice'; 
// 
import { AlertsService } from '../../global/alerts/alerts.service'; 
import { ProductService } from '../product.service'; 
import { IProduct, Product } from '../product'; 
import { ProductGridComponent } from './product-grid.component'; 
import { ProductDetailWindowComponent } from '../product-detail-window/product-detail-window.component'; 
import { ConfirmationServiceMock } from '../../public/Testing/ConfirmationService.mock'; 
// 
describe('ProductGridComponent', () => { 
    let sut: ProductGridComponent; 
    let fixture: ComponentFixture<ProductGridComponent>; 
    let alertService: AlertsService; 
    let productService: ProductService; 
    // 
    const mockDatum = [ 
     new Product(1,'p 1',1,'p 1','p 1',1,1,1,1,true), 
     new Product(2,'p 2',2,'p 2','p 2',2,2,2,2,false), 
     new Product(3,'p 3',3,'p 3','p 3',3,3,3,3,true) 
    ]; 
    // 
    beforeEach(async(() => { 
     TestBed.configureTestingModule( { 
      imports: [ 
       FormsModule, 
       DataTableModule, 
       ButtonModule, 
       BrowserAnimationsModule 
      ], 
      declarations: [ 
       ProductGridComponent, 
       ProductDetailWindowComponent, 
       Dialog, 
       ConfirmDialog 
      ], 
      providers: [ 
       AlertsService, 
       ProductService, 
       { 
        provide: Http, useFactory: (backend: ConnectionBackend, defaultOptions: BaseRequestOptions) => { 
         return new Http(backend, defaultOptions); 
        }, deps: [MockBackend, BaseRequestOptions] 
       }, 
       { provide: MockBackend, useClass: MockBackend }, 
       { provide: BaseRequestOptions, useClass: BaseRequestOptions }, 
       { provide: ConfirmationService, useClass: ConfirmationServiceMock } 
      ] 
     }) 
     .compileComponents(); 
    })); 
    // 
    beforeEach(inject([ProductService, AlertsService], 
     (srvMock: ProductService, srvc: AlertsService) => { 
      productService = srvMock; 
      alertService = srvc; 
     } 
    )); 
    // 
    beforeEach(() => { 
     fixture = TestBed.createComponent(ProductGridComponent); 
     sut = fixture.componentInstance; 
     fixture.detectChanges(); // trigger initial data binding 
     fixture.whenStable(); 
    }); 
    // Component instantiates 
    it('should be created ...', () => { 
     expect(sut).toBeTruthy(); 
    }); 
    // 
}); 
// =========================================================================== 

My confirmation service mock is here.