我有点难过。我已经使用Angular 2快速启动项目作为单元测试Angular 2的参考,但它似乎假设你有一个应用程序在运行。在我的例子中,我们有NPM包,其中包含Angular 2模块,这些模块在我们组织的各个项目中共享。我希望能够单独测试这些公共库中的代码(不将它们作为应用程序的一部分)。
我正在寻找示例或教程或解释最佳方法的内容,Google未提供任何帮助。
答案 0 :(得分:1)
我正在我的业力测试中做的事情如下:
创建模拟组件
@Component({
template: "",
selector: 'mock'
})
export class MockComponent implements OnInit {
constructor() { }
ngOnInit() {
console.log("Is loaduing");
}
}
创建模拟服务
class MockSomeService {
public subscribe(){}
public inizialize() {}
}
创建ROUTES数组
export var ROUTES = [ {path:"/pathexample", component: MockComponent}]
创建DECLARATIONS数组
export var DECLARATIONS:Component[] = [
MockComponent, ExampleComponent
];
创建提供商
const CONSTANTS_PROVIDERS: Provider[] = [
{ provide: SomeService, useClass: MockSomeService }
];
撰写测试
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();
}));
});
如果您的组件使用 route.navigate ,则应使用 TestBed.overrideComponent 并将template: '<router-outlet></router-outlet>'
添加到您的组件中(如果还没有)并实际创建像 TestBed.createComponent(ExampleComponent);