2016-12-06 10 views
-1

私はこれをうんざりしています。 Angular 2のクイックスタートプロジェクトをAngular 2のユニットテストのリファレンスとして使用しましたが、アプリを使用していると思われます。私の場合、私たちは組織のさまざまなプロジェクトで共有されているAngular 2モジュールを持つNPMパッケージを持っています。私は単体でこれらの共通ライブラリ内のコードを単体テストできるようにしたいと考えています(それらはアプリケーションの一部ではありません)。ユニットテスト共用ライブラリ内の角2のコンポーネントNPMパッケージアプリケーションのコンテキストなし

私は例やチュートリアルなど、これに最善のアプローチを説明していますが、Googleは何の助けも提供していません。

答えて

1

まあ、私は私のカルマのテストで何かやっている:

はモックコンポーネント

@Component({ 
     template: "", 
     selector: 'mock' 
}) 
export class MockComponent implements OnInit { 
    constructor() { } 
    ngOnInit() { 
    console.log("Is loaduing"); 
    } 
} 

を作成モックサービス

class MockSomeService { 
    public subscribe(){} 
    public inizialize() {} 
} 

を作成します。

ルートアレイを作成

export var ROUTES = [ {path:"/pathexample", component: MockComponent}] 

宣言配列を作成

export var DECLARATIONS:Component[] = [ 
    MockComponent, ExampleComponent 
]; 

プロバイダー

を作成
const CONSTANTS_PROVIDERS: Provider[] = [ 
    { provide: SomeService, useClass: MockSomeService } 
]; 

コンポーネントは、あなたがTestBed.overrideComponentを使用し、それをまだ持っていない場合は、あなたのコンポーネントにtemplate: '<router-outlet></router-outlet>'を追加する必要がありますroute.navigateを使用している場合は、テスト

describe('Component: example',() => { 

    beforeEach(() => { 
    TestBed.configureTestingModule({ declarations: DECLARATIONS, providers: CONSTANTS_PROVIDERS, imports: [RouterTestingModule.withRoutes(ROUTES)] }); 
    }); 

    it('should create an instance', inject([ExampleComponent], (component: ExampleComponent) => { 
    expect(component).toBeTruthy(); 
    })); 

}); 

を書くと、実際にこのようなコンポーネントを作成します。TestBed.createComponent(ExampleComponent);

関連する問題