diff --git a/package.json b/package.json index 1ec7d2c..14f34cf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "axios-miniprogram", - "version": "1.0.9", + "version": "1.0.10", "description": "基于 Promise 的 HTTP 请求库,适用于各大小程序平台。", "main": "package/index.js", "miniprogram": "package", diff --git a/src/core/dispatchRequest.ts b/src/core/dispatchRequest.ts index 84d1f3b..38bca76 100644 --- a/src/core/dispatchRequest.ts +++ b/src/core/dispatchRequest.ts @@ -2,7 +2,7 @@ * @Author: early-autumn * @Date: 2020-04-13 18:01:16 * @LastEditors: early-autumn - * @LastEditTime: 2020-04-20 13:36:32 + * @LastEditTime: 2020-04-20 23:23:29 */ import { AxiosRequestConfig, AxiosResponse } from '../types'; import isCancel from '../cancel/isCancel'; diff --git a/test/core/dispatchRequest.test.ts b/test/core/dispatchRequest.test.ts new file mode 100644 index 0000000..5b5a47d --- /dev/null +++ b/test/core/dispatchRequest.test.ts @@ -0,0 +1,54 @@ +/* + * @Author: early-autumn + * @Date: 2020-04-20 22:42:46 + * @LastEditors: early-autumn + * @LastEditTime: 2020-04-20 23:22:29 + */ +import dispatchRequest from '../../src/core/dispatchRequest'; +import CancelToken from '../../src/cancel/CancelToken'; +import isCancel from '../../src/cancel/isCancel'; +import { CancelAction } from '../../src/types'; + +const task = { + abort: jest.fn(), +}; + +describe('测试 src/core/dispatchRequest.ts', () => { + it('默认', async () => { + await dispatchRequest({}).catch((err) => { + expect(err.message).toBe('平台适配失败,您需要参阅文档使用自定义适配器手动适配当前平台'); + }); + }); + + it('请求失败', async () => { + await dispatchRequest({ + adapter({ success }) { + success({ status: 200, data: '' }); + return task; + }, + validateStatus(status) { + return status === -1; + }, + }).catch((err) => expect(err.response.status).toBe(200)); + }); + + it('取消请求', () => { + try { + let cancel: CancelAction; + dispatchRequest({ + adapter({ success }) { + cancel(); + setTimeout(() => { + success({ status: 200, data: '' }); + }); + return task; + }, + cancelToken: new CancelToken(function executor(c) { + cancel = c; + }), + }); + } catch (err) { + expect(isCancel(err)).toBe(true); + } + }); +}); diff --git a/test/core/flattenHeaders.test.ts b/test/core/flattenHeaders.test.ts index 68e2eae..7b3f71d 100644 --- a/test/core/flattenHeaders.test.ts +++ b/test/core/flattenHeaders.test.ts @@ -2,13 +2,14 @@ * @Author: early-autumn * @Date: 2020-04-20 20:39:42 * @LastEditors: early-autumn - * @LastEditTime: 2020-04-20 20:45:17 + * @LastEditTime: 2020-04-20 23:27:34 */ import flattenHeaders from '../../src/core/flattenHeaders'; describe('测试 src/core/flattenHeaders.ts', () => { it('默认', () => { expect(flattenHeaders({})).toEqual({}); + expect(flattenHeaders({ headers: {} })).toEqual({}); }); it('默认 get', () => { diff --git a/test/core/request.test.ts b/test/core/request.test.ts new file mode 100644 index 0000000..7b6cd3e --- /dev/null +++ b/test/core/request.test.ts @@ -0,0 +1,43 @@ +/* + * @Author: early-autumn + * @Date: 2020-04-20 22:51:26 + * @LastEditors: early-autumn + * @LastEditTime: 2020-04-20 23:26:18 + */ +import request from '../../src/core/request'; +import CancelToken from '../../src/cancel/CancelToken'; +import isCancel from '../../src/cancel/isCancel'; + +const task = { + abort: jest.fn(), +}; + +describe('测试 src/core/request.ts', () => { + it('默认', async () => { + await request({}).catch((err) => { + expect(err.message).toBe('平台适配失败,您需要参阅文档使用自定义适配器手动适配当前平台'); + }); + }); + + it('请求失败', async () => { + await request({ + adapter({ fail }) { + fail({}); + return task; + }, + }).catch((err) => { + expect(err.message).toBe('配置不正确或者网络异常'); + }); + }); + + it('取消请求', async () => { + await request({ + adapter() { + return task; + }, + cancelToken: new CancelToken(function executor(c) { + c(); + }), + }).catch((err) => expect(isCancel(err)).toBe(true)); + }); +});