在Angular 6中进行单元测试时,可以使用以下方法来处理依赖的承诺。
import { TestBed } from '@angular/core/testing';
import { MyService } from './my.service';
describe('MyService', () => {
let service: MyService;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [MyService]
});
service = TestBed.get(MyService);
});
it('should return a resolved promise', () => {
spyOn(service, 'getData').and.returnValue(Promise.resolve('test data'));
service.getData().then(result => {
expect(result).toBe('test data');
});
});
});
import { TestBed, fakeAsync, tick } from '@angular/core/testing';
import { MyService } from './my.service';
describe('MyService', () => {
let service: MyService;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [MyService]
});
service = TestBed.get(MyService);
});
it('should return a resolved promise', fakeAsync(() => {
let result: string;
service.getData().then(data => {
result = data;
});
tick(); // 等待承诺解析完成
expect(result).toBe('test data');
}));
});
在上述示例中,我们创建了一个名为MyService的服务,并在测试中模拟了一个名为getData()的方法,该方法返回一个承诺。使用spyOn()方法和returnValue()方法来模拟承诺的解析,并验证返回的结果。
另一种方法是使用fakeAsync()和tick()方法,它们用于模拟异步操作的执行。使用fakeAsync()将测试包裹在一个虚拟的异步环境中,并使用tick()方法等待承诺解析完成。
无论您选择哪种方法,都可以处理依赖的承诺,并对其进行单元测试。