我是角度新手
我有一个使用一些参数调用 HTTP post 请求的服务。
现在我想以角度测试该服务功能。
我的服务部分是
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 函数。
我怎样才能做到这一点?
先感谢您。
假设您从某处获取网址(例如: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 https://angular.io/guide/http#testing-http-requests
它是 http 指南的一部分,而不是测试指南的一部分,可能这就是您没有找到它的原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)