axios-mock-adapter
来源:互联网 发布:淘宝银泰百货旗舰店 编辑:程序博客网 时间:2024/06/15 00:36
原文地址:https://www.npmjs.com/package/axios-mock-adapter
Axios adapter,一个更容易的模拟请求
一、安装
1、使用npm:
$ npm install axios-mock-adapter –save-dev
2、使用cdn
https://unpkg.com/axios-mock-adapter/dist/axios-mock-adapter.js
https://unpkg.com/axios-mock-adapter/dist/axios-mock-adapter.min.js
3、也可以使用browser,要求axios在v0.9.0以及以上
二、例子
1、模拟一个GET请求
var axios = require('axios');var MockAdapter = require('axios-mock-adapter');// 定义一个mock adapter实例 var mock = new MockAdapter(axios);// 模拟GET请求 // arguments for reply are (status, data, headers) mock.onGet('/users').reply(200, { users: [ { id: 1, name: 'John Smith' } ]});axios.get('/users') .then(function(response) { console.log(response.data); });
2、模拟一个带特定参数的GET请求
var axios = require('axios');var MockAdapter = require('axios-mock-adapter'); var mock = new MockAdapter(axios); // arguments for reply are (status, data, headers) mock.onGet('/users', { params: { searchText: 'John' } }).reply(200, { users: [ { id: 1, name: 'John Smith' } ]});axios.get('/users', { params: { searchText: 'John' } } ) .then(function(response) { console.log(response.data); });
3、给相应加一个延迟,单位是毫秒
//这个实例的所有请求都会有一个2s的延迟var mock = new MockAdapter(axiosInstance, { delayResponse: 2000 });
4、还原原始的adapter(将会移除模拟行为)
mock.restore();
也可以通过reset重置注册过的模拟操作
mock.reset();
reset、restore两者是不同的,restore从axios实例中彻底移除了模拟行为,reset仅仅移除了添加在onGet、onPost所有模拟操作
5、reply函数
mock.onGet('/users').reply(function(config) { // `config`是axios的配置项包含的有url // return an array in the form of [status, data, headers] return [200, { users: [ { id: 1, name: 'John Smith' } ] }];});
6、使用正则
mock.onGet(/\/users\/\d+/).reply(function(config) { // the actual id can be grabbed from config.url return [200, {}];});
7、没有指定的路径匹配
// 状态码500拒绝所有的post请求 mock.onPost().reply(500);
8、链式操作也是被支持的
mock .onGet('/users').reply(200, users) .onGet('/posts').reply(200, posts);
9、.replyOnce() 模拟只相应一次
mock .onGet('/users').replyOnce(200, users) //第一个请求完成之后,这个操作就会被移除 .onGet('/users').replyOnce(500); //第二个请求将会出现500错误 //接下来的任何请求都会返回404错误, 因为没有匹配的操作存在
10、模拟任何给定url的请求
// mocks GET, POST, ... requests to /foo mock.onAny('/foo').reply(200);
11、.onAny可以用在想要测试一个给定顺序的系列请求
// 期望的请求顺序: const responses = [ ['GET', '/foo', 200, { foo: 'bar' }], ['POST', '/bar', 200], ['PUT', '/baz', 200]];// 匹配所有请求 mock.onAny().reply(config => { const [method, url, ...response] = responses.shift(); if (config.url === url && config.method.toUpperCase() === method) return response; // Unexpected request, error out return [500, {}];});
12、reply函数也可以返回一个Promise
mock.onGet('/product').reply(function(config) { return new Promise(function(resolve, reject) { setTimeout(function() { if (Math.random() > 0.1) { resolve([200, { id: 4, name: 'foo' } ]); } else { // reject() reason will be passed as-is. // Use HTTP error status code to simulate server failure. resolve([500, { success: false } ]); } }, 1000); });});
13、多个请求
var normalAxios = axios.create();var mockAxios = axios.create();var mock = MockAdapter(mockAxios);mock .onGet('/orders') .reply(() => Promise.all([ normalAxios .get('/api/v1/orders') .then(resp => resp.data), normalAxios .get('/api/v2/orders') .then(resp => resp.data), { id: '-1', content: 'extra row 1' }, { id: '-2', content: 'extra row 2' } ]).then( sources => [200, sources.reduce((agg, source) => agg.concat(source))] ) );
0 0
- axios-mock-adapter
- 关于 axios-mock-adapter 调用流程的分析
- Axios
- axios
- axios
- axios
- Axios
- axios
- axios
- axios
- axios
- axios
- axios
- axios
- Axios通过mock模拟数据进行通信的几种方式
- Mock
- mock
- mock
- 应用调试之使用strace命令跟踪系统调用
- HDU 1007-Quoit Design
- 解决内部ViewPager不能向左滑动的bug
- IO流类之间关系图
- 轮播图源码分析
- axios-mock-adapter
- FFMPEG Tips (2) 如何提取码流的基本信息
- JavaScript自定义事件广播与订阅
- Java笔记之垃圾回收机制
- Java中类的加载和初始化
- Problem A: 求平均年龄
- Java 8: java.time.DayOfWeek
- 畅想未来生活
- 我与Visual Basic的那些事儿