2016-08-12 58 views
0

我想爲Angular 2.0組件設置一些單元測試。儘管Angular 2.0網站上的文檔包含了使用Jasmine進行常規單元測試的信息,但沒有任何組件特定 - 但是,我找到了幾篇文章(例如,https://medium.com/google-developer-experts/angular-2-unit-testing-with-jasmine-defe20421584),該引用使用「angular2/testing」來促進依賴注射和組件測試。如何測試Angular 2.0中的組件?

不過,我可以找到這個最新的引用是爲測試版,最近的RC版本,沒有一個:https://code.angularjs.org/2.0.0-beta.9/testing.dev.js

請問如果用這仍然 正確或首選 作品作爲一種任何人都知道在Angular 2.0中進行組件測試?

編輯:爲了澄清,我只是尋找一種方法來測試組件的功能,我已經更新了我的問題,以反映這一點。

編輯2:它看起來像TestComponentBuilder(angular.io/docs/ts/latest/api/core/testing/TestComponentBuilder-class.html)適合我正在尋找,但它已被棄用。

回答

0

具有角2 rc.5,嘗試了這一點(本例使用TestBed):

import { provide } from '@angular/core'; 
import { async, TestBed } from '@angular/core/testing'; 

import { SomeComponent } from './some.component'; 

beforeEach(() => { 
    TestBed.configureTestingModule({ 
    declarations: [ 
     SomeComponent 
    ], 
    providers: [ 
     SomeComponent, 
     // ServiceA, 
     // provide(ServiceB, { useClass: TestServiceB }) 
    ], 
    imports: [ 
     // HttpModule, 
     // etc. 
    ] 
    }); 
}); 

it('should do something', async(() => { 
    // Overrides here, if you need them: 
    TestBed.overrideComponent(SomeComponent, { 
    set: { 
     template: '<div>Overridden template here</div>' 
     // ... 
    } 
    }); 

    TestBed.compileComponents().then(() => { 
    const fixture = TestBed.createComponent(SomeComponent); 

    // Access the dependency injected component instance: 
    const app = fixture.componentInstance; 

    // Access the element 
    const element = fixture.nativeElement; 

    // Detect changes to wire up the `fixture.nativeElement` as necessary: 
    fixture.detectChanges(); 

    expect(app.something).toBe('something'); 
    }); 
}));