2016-10-28 5 views
1

、テストコンポーネントに対して我々は、このようなオブジェクトを作成する必要があります。コンポーネント=新しいコンポーネントクラス()VS.コンポーネント= fixture.createInstance:Angular2テストのドキュメントによるとAngular2

component = fixture.createInstance; 

が、分離株のユニットテストのために、サービスのために、作成すると言われているように

component = new componentClass(); //traditional way of creating objects by calling class constructor 

インスタンスを作成するためのこれら2つのアプローチの違いについてはっきりしていません。また、私はこれらの両方を使用してアクセシビリティの違いに気付きました。誰かがこの2つの違いについて明確な考えを持っていますか?

答えて

0

独立テストは、クラスの内部動作のみをテストする場合に使用します。インスタンス

class MyComponent { 
    doSomething(): string {} 
} 

let component = new MyComponent(); 
expect(component.doSomething()).toBe('Hello World'); 

のためにここであなただけdoSomethingメソッドの動作をテストするつもりです。それでおしまい。

隔離されたテストでは、テンプレートがコンパイルされないため、DOMのやり取りをテストできません。このために、Angularにコンポーネントを作成させる必要があります。コンポーネントは、実際のアプリケーションと同じように実際のライフサイクルを通過します。

@Component({ 
    template: `<h1>{{ message }}</h1> 
}) 
class MyComponent { 
    message = 'Hello World' 
} 

let fixture = TestBed.createComponent(MyComponent); 
fixture.component.message = 'new message'; 
fixture.detectedChanges(); 
expect(fixture.debugElement.query(By.css('h1')).nativeElement.textContent) 
    .toBe('new message'); 

これは分離テストでは実行できませんでした。

+0

これは完璧な答えです!どうもありがとう! – Aiguo

関連する問題