问题描述: 在使用Angular 7中的swUpdate功能进行单元测试时,无法进行模拟和覆盖测试。
解决方法:
import { TestBed } from '@angular/core/testing';
import { ServiceWorkerModule, SwUpdate } from '@angular/service-worker';
import { mockServiceWorkerProvider } from '@angular/service-worker-mock';
describe('AppComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
ServiceWorkerModule,
// 配置模拟的ServiceWorker服务提供者
mockServiceWorkerProvider
],
// 在providers中注入SwUpdate
providers: [SwUpdate]
});
});
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { ServiceWorkerModule, SwUpdate } from '@angular/service-worker';
import { mockServiceWorkerProvider } from '@angular/service-worker-mock';
describe('AppComponent', () => {
let swUpdate: SwUpdate;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
ServiceWorkerModule,
mockServiceWorkerProvider
],
providers: [SwUpdate]
});
swUpdate = TestBed.get(SwUpdate);
swUpdate.activateUpdate(); // 模拟ServiceWorker更新
});
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app).toBeTruthy();
});
});
通过以上两个步骤,你可以在使用Angular 7中的swUpdate功能进行单元测试时进行模拟和覆盖测试。