博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【前端开发】 5分钟创建 Mock Server
阅读量:4603 次
发布时间:2019-06-09

本文共 3644 字,大约阅读时间需要 12 分钟。

http://blog.csdn.net/wxqee/article/details/50165581

NOTIFY

官网文档现在已经很简约、很强大了,建议直接点击。


今天,我们打算花几分钟时间创建一个自己用来测试的  服务器。

因为我是前端开发,所以这里使用 Node.js 创建一个简单的迷你工程来完成!

目标

用 curl 访问 mockserver 可以获得自己想要的结果

>>> node client1.js>>> curl http://localhost:1080/api/demo{
"name":"value"}>>> curl -X POST 'http://localhost:1080/api/demo2?test=true' -d someBody { "name":"value"}

 

我喜欢上代码

直接创建一个起步目录

npm init
  • 1

用 Java 安装 mockserver(最简单)

总结起来就是:

>>> wget http://search.maven.org/remotecontent?filepath=org/mock-server/mockserver-netty/3.10.1/mockserver-netty-3.10.1-jar-with-dependencies.jar -O mockserver-netty-3.10.1-jar-with-dependencies.jar >>> java -jar mockserver-netty-3.10.1-jar-with-dependencies.jar -serverPort 1080 -proxyPort 1090

 

用 Node.js 安装 mockserver

安装必要的 Grunt 工具和部件

# 全局安装 Grunt 客户端npm install -g grunt-cli# NPM 工程安装 Grunt 以及 Grunt 插件npm install grunt --save-devnpm install mockserver-grunt --save-dev# 创建 Gruntfile.js参考官方文档进行配置

 

 

然后创建一个文件 Gruntfile.js 用来调度本地的 MockServer 服务

/*File: Gruntfile.js*/module.exports = function(grunt) {grunt.initConfig({    start_mockserver: {        start: {            options: {                serverPort: 1080, proxyPort: 1090 } } }, stop_mockserver: { stop: { } } }); grunt.loadNpmTasks('mockserver-grunt'); // 默认被执行的任务列表。 grunt.registerTask('default', ['start_mockserver']); grunt.registerTask('stop', ['stop_mockserver']); grunt.registerTask('start', ['start_mockserver']); };

现在,通过执行下边命令即可启动一个 Mock Server 了

grunt start
  • 1

创建 MockServer Client

那么,接下来创建一个客户端文件 client1.js 用来注册自己需要如何 MockUp 一个 API 接口。

首先安装依赖:

npm install mockserver-client
  • 1

然后创建文件 client1.js

/*File: client1.js*/var mockServer = require('mockserver-client'),    mockServerClient = mockServer.mockServerClient, // MockServer client proxyClient = mockServer.proxyClient; // proxy client var remote = mockServerClient('localhost', 1080), remoteProxy = proxyClient('localhost', 1090); // 使用之前清除服务器里边已经注册的 mockup 信息,因为可能会影响当前测试结果或者开发结果呢。 remote.reset(); // 简单的设置想要的response信息 // curl -X POST http://localhost:1080/api/demo remote.mockSimpleResponse('/api/demo', { name: 'value'}, 203); // 精确的设置想要的response消息,会参考输入的情况来判断怎么跑 // curl -X POST 'http://localhost:1080/api/demo2?test=true' -d someBody remote.mockAnyResponse({ 'httpRequest': { 'method': 'POST', 'path': '/api/demo2', 'queryStringParameters': [ { 'name': 'test', 'values': [ 'true' ] } ], 'body': { 'type': "STRING", 'value': 'someBody' } }, /*httpRequest*/ 'httpResponse': { 'statusCode': 200, 'body': JSON.stringify({name: 'value'}), 'delay': { 'timeUnit': 'MILLISECONDS', 'value': 250 } }, /*httpResponse*/ 'times': { 'remainingTimes': 1, 'unlimited': false } });

好了,搞定!

使用一下试试

$ npm install$ node client1.js# 再在此使用我们的目标命令即可,见文章最上边

 

想某些请求被现网服务器调用?

也许想同时使用现网服务器的登陆功能?

>>> curl -X POST http://localhost:1080/user/login -d account=demo_user -d password=demo_password{
"status":"LOGIN_SUCCESS","token":"abcdefgxxxxxxxx"} # 期望这个请求被配置好的现网服务器处理

 

配置一个新的请求,放到 client1.js 中:

/*File: client1.js*/// 创建 bypass 请求,符合要求的请求会透传给真的服务器处理。// curl -X POST http://localhost:1080/user/login -d account=demo_user -d password=demo_passwordremote.mockAnyResponse({  httpRequest: {    method: 'POST',    path: '/user/login' }, httpForward: { host: '192.168.1.101', port: 8080, schema: "HTTP" }, times: { remainingTimes: 1, unlimited: false } });

 

然后再重新注册一下 mock 消息试试:

>>> node client1.js>>> # 执行curl命令

 

支持跨域

如果需要跨域的话,需要在 Reponse 消息中配置:

{ // Response 添加 headers 配置  'httpResponse': {    'headers': [      {name: 'Access-Control-Allow-Origin', values: ['*']}, {name: 'Access-Control-Allow-Methods', values: ['POST', 'GET', 'OPTIONS']} ] } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

搞定!

 

转载于:https://www.cnblogs.com/ceshi2016/p/7884140.html

你可能感兴趣的文章
MySQL建表语句的一些特殊字段
查看>>
《Unix环境高级编程》读书笔记 第8章-进程控制
查看>>
腾讯前端二面题目详解
查看>>
mascara-1
查看>>
Jquery Form表单取值
查看>>
Android API level 与version对应关系
查看>>
Team Name
查看>>
String类
查看>>
西门子_TDC_数据耦合小经验
查看>>
接口测试与postman
查看>>
LINQ To XML的一些方法
查看>>
[LeetCode] Copy List with Random Pointer
查看>>
openstack部署之nova
查看>>
JS组件系列——表格组件神器:bootstrap table
查看>>
存储过程Oracle(一)
查看>>
log4j日志归档
查看>>
Java笔记01——IO流
查看>>
mysql遇见error,1049
查看>>
NYOJ311 完全背包
查看>>
codevs——2822 爱在心中
查看>>