2017-01-06 17 views
0

私はAngular2アプリケーションで単体テストを行い、angle2テストフレームワークは新しくなっています。角度2ユニットテストでコンポーネントを共有しようとしています

私は2つのコンポーネントを持ち、同じメソッドをサービスから呼び出しています。

まず、私は、第二モック

import { MyService } from '../../shared/my.service'; 
import { MyModel } from '../../shared/my.model'; 

を作成するために、サービスとモデルをインポート最後に

describe('MyComponent',() => { 
    let component: MyComponent; 
    let fixture: ComponentFixture<MyComponent>; 
    const mockMyModel: MyModel[] = []; 
    const mockMyService = { 
    sameMethod:() => Observable.of(mockMyModel), 
    }; 

を模擬したモデルとサービスを手配し、サービス

beforeEach(async(() => { 
    TestBed.configureTestingModule({ 
     declarations: [ MyComponent], 
    }) 
    .overrideComponent(MyComponent, { 
     set: { 
     providers: [ 
      { provide: MyService , useValue: mockMyService }, 
     ], 
     }, 
    }) 
    .compileComponents(); 
    })); 
を模擬する必要があります

もう1つ別のコンポーネントで同じことをもう一度やる必要があります。

  • オプション1:モック 例えばための準備を共有グローバルする方法があります{ provide: MyService , useValue: global.mockMyService }

  • オプション2:サービスを模擬するためだけに 'RouterTestingModule'などの 'ServiceTestingModule'を持つことは可能ですか?

ありがとう!

答えて

0

オプション1は間違いなく、また、プロバイダのリストすることができ

myMockProvider = { provide: MyService , useValue: mockMyService }; 

beforeEach(async(() => { 
    TestBed.configureTestingModule({ 
     declarations: [ MyComponent], 
    }) 
    .overrideComponent(MyComponent, { 
     set: { 
     providers: [myMockProvider], 
     }, 
    }) 
    .compileComponents(); 
    })); 

myMockProvider

を使用することができます。ネストされたリストは自動的に providers: [...]によって解決/フラット化されます。

関連する問題