前端003_模拟数据接口_easymock

为了不影响大家的学习,如果后端的api数据还没有生成,可以先使用mock.js来模拟数据接口,提供对外服务的api接口。

对接 Mock.js 模拟数据接口

1、Mock.js 解决什么问题

  • 问题
    前后端分离项目,前端和后端人员都是根据 API 文档进行开发项目的,不应该直接相互依赖, 前端人员不应该等
    待后端开发好接口后再进行测试,既然不依赖后端接口,那前端人员应该如何测试呢?
  • 解决
    可以通过模拟数据生成器,通过一定规则 (API文档)生成模拟数据接口, 提供给前端人员进行测试。

2、设么是Mock.js

  • 官网:http://mockjs.com/
  • 文档:https://github.com/nuysoft/Mock/wiki
  • Mock.js 是用于生成随机数据,拦截 Ajax 请求。
    通过拦截 Ajax 请求,根据数据模板生成并返回模拟数据,让前端攻城师独立于后端进行开发,帮助编写单元测试。

3、使用EasyMock

3.1 什么是 EasyMock

Easy Mock 是一个可视化,并且能快速生成模拟数据的服务。是杭州大搜车无线团队出品的一个极其简单、高效、可视化、并且能快速生成模拟数据的在线 Mock 服务 。
现在 Easy Mock 内置了 Mock.js,我们可以更愉快的伪造数据了
网址下载: https://github.com/easy-mock/easy-mock

$ git clone https://github.com/easy-mock/easy-mock.git
$ cd easy-mock && npm install
  • 注意:
    easy-mock 的安装还是比较麻烦,需要事先安装mongodb redis 。

3.2 创建项目

  1. 访问 http://192.168.16.11:7300/ ,进行登录。
    注意:没有单独的注册页面,第一次输入的用户名和密码会自动帮你注册。
    在这里插入图片描述
  2. 点击右下角 + , 创建一个项目
    在这里插入图片描述
  3. 创建一个项目,如下: 在这里插入图片描述
    在这里插入图片描述

3.3 创建测试数据接口

  1. 点击 创建接口
    在这里插入图片描述

  2. EasyMock 添加模拟数据配置
    请求地址:/test
    请求方式:get

{
"code": 20000,
"message": "操作成功"
}

在这里插入图片描述
3. 点击预览,测试数据接口是否正常
在这里插入图片描述

3.4 调用数据接口

  1. 在 vue.config.js 文件中使用 devServer.proxy 选项进行代理配置
    注意:复制自己创建的 Base URL
 devServer: {
    port: port,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
    before: require('./mock/mock-server.js'),
    // 开发环境配置
    proxy: {
      [process.env.VUE_APP_BASE_API]: { // 是.env.development 文件的'/dev-api':
        // 目标服务器地址
        target: ' https://192.168.16.11:7900/mock/64557f4faf3bc37f99a23c05/db',
        changeOrigin: true, // 开启代理服务器,
        pathRewrite: {
          // '^/dev-api': '',
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }
    }
  }
  1. 创建 src/api/test.js 文件,定义调用接口 API
import request from '@/utils/request'
export default {
    test() {
        return request({
            url: '/test',
            method: 'get'
        })
    }
}
  1. 调用接口获取数据
src/views/dashboard/index.vue
<script>
// 引入 api
import api from '@/api/test'
export default {
  name: 'Dashboard',
  created() {
    this.fetchData()
  },
  methods: {
    fetchData() {
      api.test().then(response => {
      console.log(response)
    })
   }
  }
}
</script>
  1. 访问 http://localhost:9528/#/dashboard 查看浏览器是否打印值
    在这里插入图片描述

3.5 Post 请求带参数 报请求超时

  1. post接口
    修改下 /test 接口请求方式为 post
    在这里插入图片描述

  2. 修改 src/api/test.js 文件,定义调用接口 API
    通常post调用的时候都会传输数据

import request from '@/utils/request'
export default {
    test() {
        return request({
            url: '/test',
            method: 'post',
            data: {'name': '数哥'}
        })
    }
}
  1. 重启,访问页面报错
    Axios 如果发送Post请求,并且带上请求参数时,会一直报请求超时,如下
    在这里插入图片描述
  2. 原因:
    这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上

3.6 解决方案

  1. 将 mock\mock-server.js 文件下面的注释掉,再加上新的(大概第12行)
  for (const mock of mocksForServer) {
    // app[mock.type](mock.url, mock.response)
    app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
      extended: true
      }), mock.response)      
    mockLastIndex = app._router.stack.length
  }
  1. 然后往下拉,找到下面的注释掉
  // parse app.body
  // https://expressjs.com/en/4x/api.html#req.body
  // app.use(bodyParser.json())
  // app.use(bodyParser.urlencoded({
  //   extended: true
  // }))
  1. 修改后,完整的图示:
    在这里插入图片描述

  2. 验证
    在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

数哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值