Building Your Team-EasyMock在线接口模拟环境搭建

工欲善其事,必先利其器。

本文主要总结团队协助中,EasyMock在线接口模拟环境搭建。

下文将分docker环境以及单机环境分别说明。

简介

Easy Mock是一个用于快速创建和管理API模拟的工具,旨在帮助开发人员进行前端开发时模拟后端接口的返回数据。它提供了一个基于Web的界面,让用户能够轻松创建虚拟的API端点,并定义它们的行为和返回数据。

主要特点和功能包括:

  1. API模拟:Easy Mock允许用户创建虚拟的API端点,并模拟后端接口的行为,定义接口的请求和响应结构。

  2. 可视化界面:具有直观友好的Web界面,使用户能够轻松创建、管理和编辑API模拟。

  3. 数据模板:支持使用模板语法来生成动态数据,可以根据需要定义各种类型的数据响应。

  4. 团队协作:支持多人协作,可以分享API模拟数据,方便团队内部共享模拟接口的数据和设置。

  5. Mock数据持久化:Easy Mock可以将模拟的数据持久化保存,使得下次使用时无需重新创建。

Easy Mock通常用于前端开发过程中,在后端尚未开发完成或者需要模拟特定场景的数据时使用。它能够提供快速、灵活的方式来模拟API接口,让前端开发者能够独立地进行前端开发,不必等待后端接口准备好。

Docker版安装

环境准备

Docker 环境安装

安装docker

在Linux服务器上安装Docker环境,具体可以参考:https://docs.docker.com/engine/install/ubuntu/

安装docker-compose

参考https://docs.docker.com/compose/install/standalone/

手动安装

wget https://gh.ddlc.top/https://github.com/docker/compose/releases/download/v2.18.0/docker-compose-linux-x86_64 > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

验证

docker-compose -v

开放端口号

#开放9011端口号 
firewall-cmd --zone=public --add-port=9002/tcp --permanent   
#重载防火墙规则 
sudo firewall-cmd --reload

Easymock工作目录

/data/platform/04_easymock/workspace

安装配置

参考https://github.com/easy-mock/easy-mock-docker

docker-compose 文件

version: '3'

services:
  mongodb:
    image: mongo:3.4.1
    volumes:
      # ./data/db 数据库文件存放地址,根据需要修改为本地地址
      - './data/db:/data/db'
    networks:
      - easy-mock
    restart: always

  redis:
    image: redis:4.0.6
    command: redis-server --appendonly yes
    volumes:
      # ./data/redis redis 数据文件存放地址,根据需要修改为本地地址
      - './data/redis:/data'
    networks:
      - easy-mock
    restart: always

  web:
    image: easymock/easymock:1.6.0
    command: /bin/bash -c "npm start"
    ports:
      - 9011:7300
    volumes:
      # 日志地址,根据需要修改为本地地址
      - './logs:/home/easy-mock/easy-mock/logs'
      # 配置地址,请使用本地配置地址替换
      # - './production.json:/home/easy-mock/easy-mock/config/production.json'
    networks:
      - easy-mock
    restart: always

networks:
  easy-mock:

使用方式

  1. 安装 docker-compose
  2. 新建文件 docker-compose.yml 并将上面 docker-compose 文件内容复制进入 docker-compose.yml,然后将内容中注释位置替换为自己需要的本地地址即可。主要有三个需要替换的地方,数据库文件存储位置,日志文件存储位置,自定义配置文件本地地址。
  3. 启动:docker-compose -p esaymock up -d

查看日志

docker-compose logs -f

查看镜像与容器信息

docker images  # 查看镜像
docker ps -a  # 查看所有容器服务的状态

数据迁移

mongodb数据迁移

  1. mogo进入命令行
mogo
  1. mogo常用命令行
//显示所有数据库
show dbs 
//切换当前数据库
use db_name
//查看当前数据库
db
//查看当前库下的表名
show tables
活
show collections
//查询表数据
db.collection_name.find()
  1. 数据备份与迁移
导出
mongoexport --host <ip> --port <port> -d <db_name> -u <user_name> -p <password> --authenticationDatabase admin -c <table_name> -o <file_name>.json
导入
mongoimport --host <ip> --port <port>  -d <db_name> -u <user_name> -p <password>  --authenticationDatabase admin -c <table_name> --file <file_name>.json
  1. easy-mock数据库迁移

    East-mock db存储的主要是账号信息、工程信息等

#登录3.162 mogodb
#use easy-mock
#show collections
groups
mock_counts
mocks
projects
user_group
user_project
users

mongoexport

# 3.163
cd /opt/mongodb/easy-mock
mongoexport -d easy-mock -c groups -o groups.json
mongoexport -d easy-mock -c mock_counts -o mock_counts.json
mongoexport -d easy-mock -c mocks -o mocks.json
mongoexport -d easy-mock -c projects -o projects.json
mongoexport -d easy-mock -c user_group -o user_project.json
mongoexport -d easy-mock -c users -o users.json

mongoimport

#3.252
rsync -av root@192.168.3.162:/opt/mongodb/easy-mock /data/platform/04_easymock/workspace/data/db/backup/mongodb

# 3.252 docker 
docker exec -it mongodb-container_id bash
docker exec -it 429d29e16dae bash
cd /data/db/backup/mongodb/easy-mock
mongoimport -d easy-mock -c groups --file  groups.json
mongoimport -d easy-mock -c mock_counts --file mock_counts.json
mongoimport -d easy-mock -c mocks --file mocks.json
mongoimport -d easy-mock -c projects --file projects.json
mongoimport -d easy-mock -c user_group --file user_project.json
mongoimport -d easy-mock -c users --file users.json

redis数据迁移

  1. redis基本命令

    启动 redis 服务器,打开终端并输入命令 redis-cli,该命令会连接本地的 redis 服务。

    $ redis-cli
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379> PING
    
    PONG
    

    在以上实例中我们连接到本地的 redis 服务并执行 PING 命令,该命令用于检测 redis 服务是否启动。

  2. redis备份与恢复

    redis Save 命令基本语法如下:

    redis 127.0.0.1:6379> SAVE 
    OK
    

    该命令将在 redis 安装目录中创建dump.rdb文件

​ 如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。

​ 获取 redis 目录可以使用 CONFIG 命令,如下所示:

redis 127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/var/lib/redis"

以上命令 CONFIG GET dir 输出的 redis 安装目录为 /var/lib/redis。

  1. Easymock redis备份与迁移

    #3.162 
    redis-cli
    SAVE
    CONFIG GET dir
    
    ### 3.252
    rsync -av root@192.168.3.162:/var/lib/redis/dump.rdb /data/platform/04_easymock/workspace/data/redis/backup/dump.rdb
    
    docker-compose ps -a
    docker exec -it workspace-redis-1 bash
    redis-cli
    127.0.0.1:6379> CONFIG GET dir
    1) "dir"
    2) "/data"
    
    cp  /data/backup/dump.rdb /data
    
    

单机版安装

环境

服务器:Ubuntu 18.04.5 LTS

Node.jsv8.x, 不支持 v10.x)& MongoDB>= v3.4)& Redis>= v4.0)。

官网:https://github.com/easymock/easymock

安装

$ git clone https://github.com/easy-mock/easy-mock.git
$ cd easy-mock && npm install

配置文件

找到 config/default.json,或者创建一个 config/local.json 文件,将如下需要替换的字段换成自己的配置即可。

不同环境会加载不同的配置文件,在此之前你应该对 node-config 有所了解。

{
  "port": 7300,
  "host": "0.0.0.0",
  "pageSize": 30,
  "proxy": false,
  "db": "mongodb://localhost/easy-mock",
  "unsplashClientId": "",
  "redis": {
    "keyPrefix": "[Easy Mock]",
    "port": 6379,
    "host": "localhost",
    "password": "",
    "db": 0
  },
  "blackList": {
    "projects": [], // projectId,例:"5a4495e16ef711102113e500"
    "ips": [] // ip,例:"127.0.0.1"
  },
  "rateLimit": { // https://github.com/koajs/ratelimit
    "max": 1000,
    "duration": 1000
  },
  "jwt": {
    "expire": "14 days",
    "secret": "shared-secret"
  },
  "upload": {
    "types": [".jpg", ".jpeg", ".png", ".gif", ".json", ".yml", ".yaml"],
    "size": 5242880,
    "dir": "../public/upload",
    "expire": {
      "types": [".json", ".yml", ".yaml"],
      "day": -1
    }
  },
  "ldap": {
    "server": "", // 设置 server 代表启用 LDAP 登录。例:"ldap://localhost:389" 或 "ldaps://localhost:389"(使用 SSL)
    "bindDN": "", // 用户名,例:"cn=admin,dc=example,dc=com"
    "password": "",
    "filter": {
      "base": "", // 查询用户的路径,例:"dc=example,dc=com"
      "attributeName": "" // 查询字段,例:"mail"
    }
  },
  "fe": {
    "copyright": "",
    "storageNamespace": "easy-mock_",
    "timeout": 25000,
    "publicPath": "/dist/"
  }
}

背景图配置:

登录页的背景图服务目前支持 UnsplashBing

如果 unsplashClientId 配置留空,默认由 Bing 提供服务。

注意:

  • publicPath 默认是 '/dist/'。如有需要,可以将其替换成自己的 CDN;
  • 关于 fe 的配置,一旦发生改变应该重新执行 build 命令。

启动

$ npm run dev
# 访问 http://127.0.0.1:7300

更多命令

# 前端静态资源构建打包
$ npm run build

# 以生产环境方式启动,需要提前执行 build
$ npm run start

# 单元测试
$ npm run test

# 语法检测
$ npm run lint

服务器部署

在此之前请先配置好配置文件。

PM2

当在内网服务器部署时,推荐使用 PM2 来守护你的应用进程。

全局安装 PM2
$ [sudo] npm install pm2 -g
用 PM2 启动

在此之前,你应该已经完成了 build。

$ NODE_ENV=production pm2 start app.js

版本发布

Release 中记录了每个版本的详细更改。

  • 30
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我可以为您提供一个示例,展示如何使用 EasyMock 模拟一个接收 POST 请求的接口。请注意,以下示例仅用于说明目的,实际实现可能因具体情况而异。 假设您要模拟一个接收 POST 请求的接口,并返回相应的结果。以下是一个简单的示例代码: ```java import org.easymock.EasyMock; import org.junit.Assert; import org.junit.Test; import java.util.HashMap; import java.util.Map; public class EasyMockExampleTest { @Test public void testPostRequest() { // 创建模拟对象 MyApi mockedApi = EasyMock.createMock(MyApi.class); // 设置模拟对象的预期行为 Map<String, String> requestBody = new HashMap<>(); requestBody.put("param1", "value1"); requestBody.put("param2", "value2"); String expectedResponse = "Mocked Response"; EasyMock.expect(mockedApi.handlePostRequest(requestBody)).andReturn(expectedResponse); // 激活模拟对象 EasyMock.replay(mockedApi); // 执行测试 MyApiClient myApiClient = new MyApiClient(mockedApi); String actualResponse = myApiClient.postRequest(requestBody); // 断言结果 Assert.assertEquals(expectedResponse, actualResponse); // 验证模拟对象的方法是否按预期调用 EasyMock.verify(mockedApi); } } // 要模拟的接口 interface MyApi { String handlePostRequest(Map<String, String> requestBody); } // 调用接口的客户端 class MyApiClient { private MyApi myApi; public MyApiClient(MyApi myApi) { this.myApi = myApi; } public String postRequest(Map<String, String> requestBody) { // 调用接口的逻辑 return myApi.handlePostRequest(requestBody); } } ``` 在上述示例中,我们通过 EasyMock 创建了一个名为 `MyApi` 的接口的模拟对象,并设置了模拟对象的预期行为。然后,我们使用模拟对象来测试 `MyApiClient` 类的 `postRequest` 方法。 请根据您的实际需求修改示例代码,并确保您的项目中包含 EasyMock 的相关依赖。希望这个示例能对您有所帮助!如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值