- 覆盖测试的依赖关系
覆盖测试的依赖关系
TestBed提供了几个函数,允许我们覆盖测试模块中使用的依赖项。
overrideModuleoverrideComponentoverrideDirectiveoverridePipe
例如,您可能想要覆盖组件的模板。这对于测试大型组件的一小部分很有用,因为您可以忽略DOM的其余部分的输出,并且只关注您感兴趣的部分。
import {Component} from '@angular/core';@Component({selector: 'display-message',template: `<div><div><h1>{{message}}</h1><div></div>`})export class MessageComponent {public message: string = '';setMessage(newMessage: string) {this.message = newMessage;}}
import {MessageComponent} from './message.component';import { provide } from '@angular/core';import {async,inject,TestBed,} from '@angular/core/testing';describe('MessageComponent', () => {let fixture;beforeEach(() => {TestBed.configureTestingModule({declarations: [MessageComponent],providers: []});fixture = TestBed.overrideComponent(MessageComponent, {set: {template: '<span>{{message}}</span>'}}).createComponent(MessageComponent);fixture.detectChanges();});it('should set the message', async(inject([], () => {fixture.componentInstance.setMessage('Test message');fixture.detectChanges();fixture.whenStable().then(() => {const compiled = fixture.debugElement.nativeElement;expect(compiled.querySelector('span').innerText).toEqual('Test message');});})));});
View Example
