import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; import { TestBed, inject, getTestBed } from '@angular/core/testing'; import { Analysis } from './analysis.model'; import { AnalysisService } from './analysis.service'; describe('#getAnalysisList', () => { beforeEach(() => { TestBed.configureTestingModule({ // mock HttpClient imports: [HttpClientTestingModule], providers: [AnalysisService] }); }); /** * HttpTestingController 需要注入it(...) * 否则会报错:Cannot read property '__source' of undefined */ it('should be created', inject([HttpTestingController, AnalysisService], (httpMock: HttpTestingController, service: AnalysisService) => { const mockUsers = [ { name: 'Bob', website: 'www.yessss.com' }, { name: 'Juliette', website: 'nope.com' } ]; expect(service).toBeTruthy(); // 此时还没有调用接口 service.getAnalysisList().subscribe(data => { expect(data[0].name).toBe('Bob'); }); const mockReq = httpMock.expectOne(req => req.method === 'GET' && req.url === '/analysis/currentUser'); expect(mockReq.cancelled).toBeFalsy(); expect(mockReq.request.responseType).toEqual('json'); // 伪造返回值,此时才开始模拟请求 mockReq.flush(mockUsers); })); });