首页 > 其他分享 >如何使用 jest 测试使用 axios 的 httpClient?

如何使用 jest 测试使用 axios 的 httpClient?

时间:2023-11-11 19:36:15浏览次数:40  
标签:axios const 测试 url jest data mock httpClient

要使用Jest测试使用axios的httpClient,您可以使用Jest提供的模拟功能来伪造对外部API的请求和响应。下面是一个示例测试的代码:

首先,安装所需的依赖:

npm install axios axios-mock-adapter jest --save-dev

然后,创建一个名为httpService.test.js的测试文件,编写以下代码:

import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import { post } from './httpService';

describe('httpService', () => {
  let mock;

  beforeEach(() => {
    mock = new MockAdapter(axios);
  });

  afterEach(() => {
    mock.reset();
  });

  it('should make a POST request', async () => {
    const url = 'http://test.com/api';
    const data = { name: 'John', age: 30 };
    const responseData = { success: true };

    mock.onPost(url, data).reply(200, responseData);

    const result = await post(url, data);

    expect(result).toEqual(responseData);
  });

  it('should throw an error for failed request', async () => {
    const url = 'http://test.com/api';
    const data = { name: 'John', age: 30 };

    mock.onPost(url, data).reply(500);

    await expect(post(url, data)).rejects.toThrow('Error in POST request');
  });
});

在上面的示例中,我们使用MockAdapter来创建一个虚拟的axios实例,然后设置它的响应。在第一个测试中,我们模拟了一个成功的POST请求,并验证返回的数据是否与预期的responseData匹配。在第二个测试中,我们模拟了一个失败的POST请求,并验证是否抛出了一个包含特定错误消息的错误。

运行这个测试文件时,Jest将使用模拟的axios进行请求,而不会实际发送请求到外部API。这样您就可以测试您的httpService中的逻辑,包括对API响应的处理。

请注意,这个示例只测试了httpService的post方法。根据您的需求,您可以编写更多的测试来验证不同的场景和方法。

标签:axios,const,测试,url,jest,data,mock,httpClient
From: https://blog.51cto.com/M82A1/8319188

相关文章

  • axios的this指向问题
    letvue=newVue({ methods:{ testMethod:function(){ //第一个: axios({ method:"post", url:"CartServlet", }).then(response=>{ this.cartJson=response; }); //第二个: axios({ method:"po......
  • ts + axios token无感刷新,及重新请求后页面不刷新问题
    最近上班遇到的新需求,token无感刷新,参考了很多博客,也看了渡一老师的视频,功能是实现了,但是发现重新请求后页面数据没有更新遇到相同问题的先理清代码执行顺序和Promise,看看执行结果有没有resolve()出去。话不多说,直接上代码,因为自己封装的请求和大家的不一样,仅供参考无感刷新token......
  • .net core webapi Startup services.AddHttpClient
    staticpublicclassCreditScoreServiceExtension{staticpublicvoidAddCreditScoreQueryServiceHttpClient(thisIServiceCollectionservices,IConfigurationconfig){services.AddSingleton<ICreditScoreQueryService,CreditS......
  • vue3 axios 获得基地址
    1.位置 //axios基础的封装importaxiosfrom'axios'import'element-plus/es/components/message/style/css'import{ElMessage}from'element-plus'consthttpInstance=axios.create({baseURL:'http://laravel.cn',//基......
  • 如何在Vue.js中添加headers(标头) 使用 axios,单独请求,所有请求 添加请求头
    如何在Vue.js中添加headers(标头)使用axios,单独请求,所有请求添加请求头Vue.js是一个流行的前端框架,它以其简单易用的API和高度可组合的架构而闻名。当你构建一个Web应用时,你通常会使用一个HTTP客户端来与API交互。该客户端可以是一个浏览器内部的XMLHttpRequest,也可以......
  • HttpClient报错 org.apache.http.NoHttpResponseException : 10.1.1.0:13001 failed t
    一、问题描述使用HttpClient并发调用http接口,并发量稍微大一点就会报错org.apache.http.NoHttpResponseException:10.1.1.0:13001failedtorespond 二、排查过程最开始怀疑是服务端连接过多,拒绝请求了,监控发现服务端并没有多少连接找运维搭建了一个新环(只有我们请求服务端),......
  • 基于 Axios 封装一个完美的双 token 无感刷新
    用户登录之后,会返回一个用户的标识,之后带上这个标识请求别的接口,就能识别出该用户。标识登录状态的方案有两种:session和jwt。session是通过cookie返回一个id,关联服务端内存里保存的session对象,请求时服务端取出cookie里id对应的session对象,就可以拿到用户信息。jwt......
  • 自定义简单的axios方法
    functionmyAxios(config){returnnewPromise((resolve,reject)=>{constxhr=newXMLHttpRequest()//如果存在想要放在链接后的参数?name=1&password=2if(config.params){constparamsObj=newURLSearchParams(conf......
  • Delphi使用TNetHTTPClient上传文件java接收测试
    Delphi使用TNetHTTPClient上传文件java接收测试上传客户端新建一个应用,拖入一个TButton按扭,一个TMemo多行文件显示框,一个TNetHttpClient,一个OpenDialog文件打开对话框。双击按扭添加代码  uses  System.Net.Mime;procedureTForm1.Button1Click(Sender:TObject);var......
  • 使用async和await获取axios的数据注意事项
    使用async和await获取axios的数据的注意事项确定正确使用asyncfunctiongetInfo(){constres=awaitaxios.get('http://example.com')returnres.data}上述代码等同于asyncfunctiongetInfo(){constresult=(awaitaxios.get('http://example.com')).data......