如何解决如何使用角度9中的参数测试http.post请求?
我是新手 我有一个使用某些参数调用HTTP发布请求的服务。 现在,我要按角度测试该服务功能。
我的服务部分是
import { HttpClient,HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class GetProviderService{
providersData: any;
constructor(private http: HttpClient) {
}
getProviders(param: any): any{
var json = JSON.stringify(param);
const myHeader = new HttpHeaders().set('content-type','application/json');
this.http.post<any>(url,json,{headers: myHeader}).subsribe(data=> {
this.providerData = data;
return this.providerData;
}),(erorr) => {
window.alert("error");
return null;
}
}
现在我想用错误订阅和错误覆盖getProviders函数。 我该怎么办?
谢谢。
解决方法
假设您从某处获取url(例如getProviders(param: any,url: string)
是测试套件的示例:
import { TestBed } from '@angular/core/testing';
import { HttpClientTestingModule,HttpTestingController } from '@angular/common/http/testing';
import { GetProviderService } from './get-provider.service';
describe('GetProviderService',() => {
let service: GetProviderService;
let httpMock: HttpTestingController;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
HttpClientTestingModule
]
});
service = TestBed.inject(GetProviderService);
httpMock = TestBed.inject(HttpTestingController);
});
fit('should log success on success',() => {
const mockUrl = 'http://mockurl.com/test';
const mockResponse = {hello: 'test'}
service.getProviders({},mockUrl);
httpMock.expectOne(mockUrl).flush(mockResponse);
// your expects here
});
fit('should log error on error',() => {
const mockUrl = 'http://mockurl.com/test';
const mockErrorMsg = 'My mock error message'
const mockError = new ErrorEvent('Network error',{
message: mockErrorMsg,});
service.getProviders({},mockUrl);
httpMock.expectOne(mockUrl).error(mockError);
// your expects here
});
});
这是相关的角度文档: https://angular.io/guide/http#testing-http-requests
这是http指南的一部分,而不是测试指南,这可能就是您找不到它的原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。