要解决Angular 7组件测试使用原始服务而不是模拟服务的问题,你可以按照以下步骤进行操作:
// 模拟服务
@Injectable()
export class MockDataService {
getData(): string {
return 'Mock Data';
}
}
import { TestBed } from '@angular/core/testing';
import { MyComponent } from './my.component';
import { DataService } from './data.service';
import { MockDataService } from './mock-data.service';
describe('MyComponent', () => {
let component: MyComponent;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [MyComponent],
providers: [
// 使用模拟服务替换原始服务
{ provide: DataService, useClass: MockDataService }
]
});
const fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
});
it('should use mock data', () => {
// 断言组件使用了模拟服务返回的数据
expect(component.data).toBe('Mock Data');
});
});
import { Component } from '@angular/core';
import { DataService } from './data.service';
@Component({
selector: 'app-my',
template: `{{ data }}`
})
export class MyComponent {
data: string;
constructor(private dataService: DataService) {
this.data = this.dataService.getData();
}
}
通过上述步骤,你可以在Angular 7中进行组件测试时使用模拟服务替代原始服务。
上一篇:Angular 7最终不起作用。