Git Product home page Git Product logo

matman's People

Contributors

dependabot[bot] avatar helinjiang avatar xzlgh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

matman's Issues

每一种mock数据,希望支持独立的文档

我们构造mock数据的目的是为了测试验证某个特定的场景,有时候需要额外的文档来说明这种场景是什么,表现是什么,需要依赖什么等。否则第二个人来运行用例时,即使拿到了数据,也不知道正确的表现是什么。

关于 plugin 插件机制

目前官方默认了两个插件 mockerreporter。但插件机制并不完善。一个理想中的插件机制,应该包含路由配置、前端页面的展示等。

路由配置时,支持用户自定义路由

支持用户自定义路由,这样更灵活。目前是采用如下的方法:

router.get('/*', function (req, res) {
   // 如果匹配到cgi,则取mock值,否则取现网值
})

但此类做法将路由的功能变为自己处理了,会比较麻烦。另外,该方式还不支持类似 /id/:id 的形式,因此,将路由匹配交由用户自行处理。

增加测试用例

之前为了实现功能,缺少一些必要的测试用例,需要补齐

如果acttiveModule为非法值时会报错

如果acttiveModule为非法值时会报错,产生的原因可能重命名了module的文件名,修改方案是要做兼容,如果activeModule为非法值,则默认重选一个

image

CGI 被复用的场景

有些 CGI 是被多种场景复用的,往往通过某些指定参数来区分,例如 /cgi-bin/user/list?type=new 代表的是新用户列表,而 /cgi-bin/user/list?type=vip 代表的是VIP用户列表。

关于 defaultModule

  • 如果设置了一个不存在的 mock module,则需要提示错误
  • defaultModule 默认值应该是不启动mock服务(#6)

mock module 应该支持指定IP去请求

常规的 mock module 是构造模拟数据值,但是有些场景下,只需要去请求指定 IP 服务器的CGI即可,比如请求测试服务器上的 CGI

为mock module增加基础框架的能力

不同的 cgi 返回的数据不一定相同,但是都可能会有一个共同的返回规则。

举一个通用的 cgi 返回格式的例子。

一般在返回数据中,会有一个字段(错误码)标志 cgi 返回是否是成功标记,例如 retcode 字段,如果该字段值为 0,则表示数据请求返回结果是成功的,但如果值不为 0,则说明获取结果失败;而失败的原因,可能是鉴权失败,或者某些服务异常等。

如果 cgi 返回了失败的错误码 ,一般还有个字段来进一步解释错误的原因,例如 errmsg 等。

{
    "retcode": 100000,
    "errmsg": "no login"
}

而如果是成功的结果,则实际的数据可能置于 result 中,前端程序处理的数据也来自于此:

{
    "retcode": 0,
    "result": {
        "name": "hello",
        "age": 18
    }
}

那么我们在写 mock module 的时候,这些公共的部分其实都是可以复用的,我们写 mock module 只需要专心写实际的数据即可(例如上面的 result 字段的值),然后再通过某种处理方式,返回最终的数据。

某些CGI不想被mocker住,可以在url参数中增加某个标识

启动了mock服务之后,有时候需要针对特定的一次请求不要走mock服务,则需要某种机制,例如在url参数中增加某个标识,以便过忽略掉这个CGI请求。

例如,/cgi-bin/a/b/c 这个 CGI 都走mock服务,但唯独 /cgi-bin/a/b/c?type=2 不需要走mock

handle_modules 不应该是必须的条件

在之前的设计中,一个 handler 必须包含 handle_modules,即使只有一个 module,也需要放进去。但实际上, handle_modules 不应该是必须的。

如果没有 handle_modules , 就必须有一个 index.js

解决ES6项目的运行

目前项目中如果使用了 es6 的一些语法,需要依赖 babel-cli 工具来运行,但这也许不是最佳方案。

需要处理db.json中的错误数据

默认情况下 db.json 中的数据拥有高优先级,但是如果其中的数据有问题的话,会让程序的结果出乎意料。

比如之前的activeModule 为 a,但是a模块被删除或者重命名之后,此时启动 matman 会导致程序报错。因此,需要有适当的机制清理错误数据,或者忽略缓存数据。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.