当我尝试执行HTTP单元测试用例时,我收到此错误
我正在使用Angular 5.我该如何解决这个问题
下面是我正常GET的代码.下面的代码只是带来正常的GET
import { TestBed } from '@angular/core/testing';
import { HttpClientTestingModule, HttpTestingController, TestRequest } from
'@angular/common/http/testing';
import { DangerService } from './danger.service';
import { DangerFlag } from '../danger.model';
describe('DataService Tests', () => {
let dataService: DangerService;
let httpTestingController: HttpTestingController;
let testDangerFlags: DangerFlag[] = [ "sample data" ]
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ HttpClientTestingModule ],
providers: [ DangerService ]
});
dataService = TestBed.get(DangerService);
httpTestingController = TestBed.get(HttpTestingController);
});
afterEach(() => {
httpTestingController.verify();
});
fit('should get all danger flags', () …Run Code Online (Sandbox Code Playgroud) 我有一个组件,其中我在一个函数中有一个请求:
getData():Observable<any>{
return this._http.get('/app/data', {observe: 'response'});
}
Run Code Online (Sandbox Code Playgroud)
它向我返回订阅中的对象数组,例如:
[{name: 'a'}, {name: 'b'}]
Run Code Online (Sandbox Code Playgroud)
或类似的东西。
我想编写一个测试,以确保getData()使用正确的url一次调用http GET,并且预订返回类似数组的内容。
我的代码:
...
it('getData() should http GET names', () => {
inject([HttpTestingController], (httpMock: HttpTestingController) => {
const names = [{name: 'a'}, {name: 'b'}];
component.getData().subscribe((res) => {
expect(res).toEqual(names);
});
const req = httpMock.expectOne('/app/data');
expect(req.request.method).toEqual("GET");
req.flush(names);
httpMock.verify();
});
});
...
Run Code Online (Sandbox Code Playgroud)
我的测试失败,并显示以下消息:“预期没有打开的请求,发现1:GET / app / data”