🚧 写测试 修BUG

pull/1/head
954270063@qq.com 2020-04-19 03:05:41 +08:00
parent 370256a0f8
commit b1f5da385b
11 changed files with 54 additions and 52 deletions

View File

@ -38,24 +38,24 @@ npm i axios-miniprogram
|参数|类型|默认值|说明|全平台兼容| |参数|类型|默认值|说明|全平台兼容|
|:-|:-|:-|:-|:-| |:-|:-|:-|:-|:-|
|adapter|Function|[查看](https://github.com/early-autumn/axios-miniprogram/blob/master/src/helper/defaults.ts#L11)|自定义适配器|是| |adapter|Function|[查看](https://github.com/early-autumn/axios-miniprogram/blob/master/src/helper/defaults.ts#L11)|自定义适配器|是|
|baseURL|String||基础地址|是| |baseURL|String| |基础地址|是|
|url|String||请求地址|是| |url|String| |请求地址|是|
|method|String|get|请求方法|| |method|String|get|请求方法| |
|params|Object||请求参数|是| |params|Object| |请求参数|是|
|data|String/Object/ArrayBuffer||请求数据|是| |data|String/Object/ArrayBuffer| |请求数据|是|
|headers|Object|[查看](https://github.com/early-autumn/axios-miniprogram/blob/master/src/helper/defaults.ts#L13)|请求头|是| |headers|Object|[查看](https://github.com/early-autumn/axios-miniprogram/blob/master/src/helper/defaults.ts#L13)|请求头|是|
|validateStatus|Function|[查看](https://github.com/early-autumn/axios-miniprogram/blob/master/src/helper/defaults.ts#L30)|自定义合法状态码|是| |validateStatus|Function|[查看](https://github.com/early-autumn/axios-miniprogram/blob/master/src/helper/defaults.ts#L30)|自定义合法状态码|是|
|paramsSerializer|Function||自定义参数序列化|是| |paramsSerializer|Function| |自定义参数序列化|是|
|transformRequest|Function/Array<.Function>||自定义转换请求数据|是| |transformRequest|Function/Array<.Function>| |自定义转换请求数据|是|
|transformResponse|Function/Array<.Function>||自定义转换响应数据|是| |transformResponse|Function/Array<.Function>| |自定义转换响应数据|是|
|cancelToken|Object||取消令牌|是| |cancelToken|Object| |取消令牌|是|
|timeout|Number|0|超时时间|| |timeout|Number|0|超时时间| |
|dataType|String|json|响应数据格式|是| |dataType|String|json|响应数据格式|是|
|responseType|String|text|响应数据类型|是| |responseType|String|text|响应数据类型|是|
|enableHttp2|Boolean|false|开启 http2|| |enableHttp2|Boolean|false|开启 http2| |
|enableQuic|Boolean|false|开启 quic|| |enableQuic|Boolean|false|开启 quic| |
|enableCache|Boolean|false|开启 cache|| |enableCache|Boolean|false|开启 cache| |
|sslVerify|Boolean|true|验证 ssl 证书|| |sslVerify|Boolean|true|验证 ssl 证书| |
##### `config.method`的合法值 ##### `config.method`的合法值
@ -63,14 +63,14 @@ npm i axios-miniprogram
|值|说明|全平台兼容| |值|说明|全平台兼容|
|:-|:-|:-| |:-|:-|:-|
|OPTIONS| |OPTIONS| | |
|GET||是| |GET| |是|
|HEAD| |HEAD| | |
|POST||是| |POST| |是|
|PUT||是| |PUT| |是|
|DELETE||是| |DELETE| |是|
|TRACE| |TRACE| | |
|CONNECT| |CONNECT| | |
##### `config.dataType`的合法值 ##### `config.dataType`的合法值
@ -84,7 +84,7 @@ npm i axios-miniprogram
|值|说明|全平台兼容| |值|说明|全平台兼容|
|:-|:-|:-| |:-|:-|:-|
|text|响应的数据为文本|是| |text|响应的数据为文本|是|
|arraybuffer|响应的数据为 ArrayBuffer|是| |arraybuffer|响应的数据为 ArrayBuffer|是|
##### `config.validateStatus`自定义合法状态码 ##### `config.validateStatus`自定义合法状态码
@ -227,8 +227,8 @@ instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlenco
|response|Object|通用响应体|是| |response|Object|通用响应体|是|
|request|Object|通用请求配置|是| |request|Object|通用请求配置|是|
|config|Object|Axios 请求配置|是| |config|Object|Axios 请求配置|是|
|cookies|Array<.String>|开发者服务器返回的 cookies格式为字符串数组| |cookies|Array<.String>|开发者服务器返回的 cookies格式为字符串数组| |
|profile|Object|网络请求过程中一些关键时间点的耗时信息| |profile|Object|网络请求过程中一些关键时间点的耗时信息| |
## API ## API

View File

@ -1,6 +1,6 @@
{ {
"name": "axios-miniprogram", "name": "axios-miniprogram",
"version": "1.0.2", "version": "1.0.5",
"description": "基于 Promise 的 HTTP 请求库,适用于各大小程序平台。", "description": "基于 Promise 的 HTTP 请求库,适用于各大小程序平台。",
"main": "package/index.js", "main": "package/index.js",
"miniprogram": "package", "miniprogram": "package",

View File

@ -2,17 +2,16 @@
* @Author: early-autumn * @Author: early-autumn
* @Date: 2020-04-17 12:18:25 * @Date: 2020-04-17 12:18:25
* @LastEditors: early-autumn * @LastEditors: early-autumn
* @LastEditTime: 2020-04-18 20:34:02 * @LastEditTime: 2020-04-19 01:15:42
*/ */
import { Adapter, Platform } from '../types'; import { Adapter, Platform } from '../types';
/* eslint-disable no-var */ declare let wx: Platform;
var wx: Platform; declare let my: Platform;
var swan: Platform; declare let swan: Platform;
var my: Platform; declare let tt: Platform;
var tt: Platform; declare let qq: Platform;
var qq: Platform; declare let uni: Platform;
var uni: Platform;
/** /**
* *

View File

@ -2,7 +2,7 @@
* @Author: early-autumn * @Author: early-autumn
* @Date: 2020-04-15 12:45:18 * @Date: 2020-04-15 12:45:18
* @LastEditors: early-autumn * @LastEditors: early-autumn
* @LastEditTime: 2020-04-18 15:32:21 * @LastEditTime: 2020-04-19 01:40:54
*/ */
import { AxiosRequestConfig, Data, AxiosResponse, AxiosBaseInstance, AxiosInstance } from './types'; import { AxiosRequestConfig, Data, AxiosResponse, AxiosBaseInstance, AxiosInstance } from './types';
import Axios from './core/Axios'; import Axios from './core/Axios';
@ -51,7 +51,7 @@ function createInstance(config: AxiosRequestConfig): AxiosInstance {
} }
// Axios 实例的所有属性和方法合并至 axios 函数 // Axios 实例的所有属性和方法合并至 axios 函数
Object.assign(axios, instance); Object.assign(axios, instance, Object.getPrototypeOf(instance));
return axios as AxiosInstance; return axios as AxiosInstance;
} }

View File

@ -2,7 +2,7 @@
* @Author: early-autumn * @Author: early-autumn
* @Date: 2020-04-15 17:50:50 * @Date: 2020-04-15 17:50:50
* @LastEditors: early-autumn * @LastEditors: early-autumn
* @LastEditTime: 2020-04-17 16:11:54 * @LastEditTime: 2020-04-19 02:22:28
*/ */
import { import {
InterceptorResolved, InterceptorResolved,
@ -24,11 +24,11 @@ export default class InterceptorManagerStatic<T> implements InterceptorManager<T
/** /**
* *
*/ */
private interceptors: Map<number, Interceptor<T>>; private interceptors: Record<string, Interceptor<T>>;
constructor() { constructor() {
this.id = 0; this.id = 0;
this.interceptors = new Map(); this.interceptors = {};
} }
/** /**
@ -38,10 +38,10 @@ export default class InterceptorManagerStatic<T> implements InterceptorManager<T
* @param rejected * @param rejected
*/ */
public use(resolved: InterceptorResolved<T>, rejected: InterceptorRejected = (err: any) => Promise.reject(err)) { public use(resolved: InterceptorResolved<T>, rejected: InterceptorRejected = (err: any) => Promise.reject(err)) {
this.interceptors.set(this.id++, { this.interceptors[this.id++] = {
resolved, resolved,
rejected, rejected,
}); };
return this.id; return this.id;
} }
@ -52,7 +52,7 @@ export default class InterceptorManagerStatic<T> implements InterceptorManager<T
* @param id id * @param id id
*/ */
public eject(id: number): void { public eject(id: number): void {
this.interceptors.delete(id); delete this.interceptors[id];
} }
/** /**
@ -62,7 +62,7 @@ export default class InterceptorManagerStatic<T> implements InterceptorManager<T
* @param reverse * @param reverse
*/ */
public forEach(executor: InterceptorExecutor<T>, reverse?: 'reverse'): void { public forEach(executor: InterceptorExecutor<T>, reverse?: 'reverse'): void {
let interceptors: Interceptor<T>[] = [...this.interceptors.values()]; let interceptors: Interceptor<T>[] = [...Object.values(this.interceptors)];
if (reverse === 'reverse') { if (reverse === 'reverse') {
interceptors = interceptors.reverse(); interceptors = interceptors.reverse();

View File

@ -2,7 +2,7 @@
* @Author: early-autumn * @Author: early-autumn
* @Date: 2020-04-16 00:48:45 * @Date: 2020-04-16 00:48:45
* @LastEditors: early-autumn * @LastEditors: early-autumn
* @LastEditTime: 2020-04-18 20:32:56 * @LastEditTime: 2020-04-19 01:56:59
*/ */
import { AxiosRequestConfig, AxiosResponse, Response } from '../types'; import { AxiosRequestConfig, AxiosResponse, Response } from '../types';
import createError from '../core/createError'; import createError from '../core/createError';
@ -50,7 +50,7 @@ export default function request(config: AxiosRequestConfig): Promise<AxiosRespon
if (config.validateStatus === undefined || config.validateStatus(response.status)) { if (config.validateStatus === undefined || config.validateStatus(response.status)) {
resolve(response); resolve(response);
} else { } else {
catchError(`请求失败,状态码为 ${status}`, response); catchError(`请求失败,状态码为 ${response.status}`, response);
} }
} }

View File

@ -2,7 +2,7 @@
* @Author: early-autumn * @Author: early-autumn
* @Date: 2020-04-18 12:00:01 * @Date: 2020-04-18 12:00:01
* @LastEditors: early-autumn * @LastEditors: early-autumn
* @LastEditTime: 2020-04-18 15:40:23 * @LastEditTime: 2020-04-19 02:32:15
*/ */
import { AliasMethod, Headers, AxiosRequestConfig } from '../types'; import { AliasMethod, Headers, AxiosRequestConfig } from '../types';
import { merge } from './utils'; import { merge } from './utils';
@ -18,7 +18,7 @@ export default function flattenHeaders(config: AxiosRequestConfig): Headers {
headers = merge(headers.common ?? {}, headers[method] ?? {}, headers); headers = merge(headers.common ?? {}, headers[method] ?? {}, headers);
['delete', 'get', 'head', 'post', 'put', 'patch', 'common'].forEach((key: string) => { ['common', 'options', 'delete', 'get', 'head', 'post', 'put', 'trace', 'connect'].forEach((key: string) => {
delete headers[key]; delete headers[key];
}); });

View File

@ -2,7 +2,7 @@
* @Author: early-autumn * @Author: early-autumn
* @Date: 2020-04-13 21:55:40 * @Date: 2020-04-13 21:55:40
* @LastEditors: early-autumn * @LastEditors: early-autumn
* @LastEditTime: 2020-04-17 09:29:19 * @LastEditTime: 2020-04-19 01:56:21
*/ */
const _toString = Object.prototype.toString; const _toString = Object.prototype.toString;
@ -94,6 +94,9 @@ export function deepMerge(...objs: Record<string, any>[]): Record<string, any> {
} }
objs.forEach((obj: Record<string, any>): void => { objs.forEach((obj: Record<string, any>): void => {
if (obj === undefined) {
return;
}
Object.entries(obj).forEach(([key, value]) => assignValue(key, value)); Object.entries(obj).forEach(([key, value]) => assignValue(key, value));
}); });

View File

@ -2,7 +2,7 @@
* @Author: early-autumn * @Author: early-autumn
* @Date: 2020-04-14 23:22:52 * @Date: 2020-04-14 23:22:52
* @LastEditors: early-autumn * @LastEditors: early-autumn
* @LastEditTime: 2020-04-18 23:47:50 * @LastEditTime: 2020-04-19 02:31:59
*/ */
import axios from './axios'; import axios from './axios';

View File

@ -2,7 +2,7 @@
* @Author: early-autumn * @Author: early-autumn
* @Date: 2020-04-13 15:23:53 * @Date: 2020-04-13 15:23:53
* @LastEditors: early-autumn * @LastEditors: early-autumn
* @LastEditTime: 2020-04-18 23:00:43 * @LastEditTime: 2020-04-19 02:06:24
*/ */
/** /**
* *

View File

@ -2,12 +2,12 @@
* @Author: early-autumn * @Author: early-autumn
* @Date: 2020-04-14 23:43:45 * @Date: 2020-04-14 23:43:45
* @LastEditors: early-autumn * @LastEditors: early-autumn
* @LastEditTime: 2020-04-17 11:44:55 * @LastEditTime: 2020-04-19 03:05:38
*/ */
import { isDate } from '../src/helper/utils'; import { isDate } from '../src/helper/utils';
describe('', () => { describe('', () => {
it('?', () => { it('?', () => {
expect(isDate({})).toBeFalsy(); expect(isDate(new Date())).toBe(true);
}); });
}); });