单元测试 – Angular 2 TestBed with mocks
发布时间:2020-12-17 08:01:35 所属栏目:安全 来源:网络整理
导读:我正在尝试测试使用其他服务的组件.我想通过为服务提供模拟来隔离组件.在RC5之前,我可以简单地使用现在已弃用的addproviders,并将被下一个RC删除.相反,我必须使用TestBed.当我因某种原因提供模拟角度时,请继续寻找模拟所依赖的服务.并抛出DI异常.当我提供所
我正在尝试测试使用其他服务的组件.我想通过为服务提供模拟来隔离组件.在RC5之前,我可以简单地使用现在已弃用的addproviders,并将被下一个RC删除.相反,我必须使用TestBed.当我因某种原因提供模拟角度时,请继续寻找模拟所依赖的服务.并抛出DI异常.当我提供所有依赖项时,测试工作但我不想为每个测试套件重复自己.这打破了基本的OO原则.
我的测试套件: describe('Component: DummyRestApi',() => { class DummyRestApiTestService { GetAll() { return Rx.Observable.create(observer => { let data:Data[] = []; data.push({ id: 0,data: 'data' }); observer.next(data); observer.complete(); }); } Add(data) { } } let fixture; let myMockWindow:Window; // ToDo use the mocks beforeEach(() => { myMockWindow = <any> {location: <any> {hostname: '127.0.0.1'}}; TestBed.configureTestingModule({ declarations: [DummyRestApiComponent],providers: [ // ServerAddressResolverService,DummyRestApiComponent,// ConfigurationService,{provide: DummyRestApiService,useClass: DummyRestApiTestService},// {provide: Window,useValue: myMockWindow} ],imports: [FormsModule,HttpModule] }); TestBed.compileComponents().catch(error => console.error(error)); // addProviders([ // DummyRestApiComponent,// {provide: DummyRestApiService,// ]); }); describe('Initializing',() => { beforeEach(async(() => { console.log('Compiling'); TestBed.compileComponents().catch(error => console.error(error)); console.log('Compiling again'); })); it('should create an instance',async(() => { var fixture = TestBed.createComponent(DummyRestApiComponent); fixture.detectChanges(); expect(fixture.debugElement.componentInstance).toBeTruthy(); } )); }); Angular 2.0.0-RC5
请注意,Patrick Ineichens回答使用了提议,已弃用.
providers: [provide(TodoService,{ useValue: this.service })] 应改为: providers: [{provide:TodoService,useValue: this.service }] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |