我正在尝试为Angular 2.0组件设置一些单元测试。虽然Angular 2.0网站上的文档包含使用Jasmine进行一般单元测试的信息,但没有任何组件特定 - 但是,我发现了一些文章(例如,https://medium.com/google-developer-experts/angular-2-unit-testing-with-jasmine-defe20421584),参考使用" angular2 / testing"促进依赖注入和组件测试。
但是,我可以找到的最新参考是针对测试版,而不是最近的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 :(得分:0)
使用Angular 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');
});
}));