Ajax模拟插件 - Mockjax介绍

在前后台共同进行一个项目的时候常会遇到一种情景,大家统一定义好接口数据格式后,前后端各自按照接口进行开发,当前端开发完成后台接口却还没有开发完成,这个时候要进行接口测试,只能等后台开发完成才能测试,在这中间会浪费了很多时间。

现在有个利器可以解决这个问题,即使不用后台,只要提前制定好接口的数据格式,那么前端就可以自己模拟接口来进行接口测试了,那就是Mockjax和mockJSON插件。

Mockjax(https://github.com/jakerella/jquery-mockjax)主要是可以针对指定的url进行mock,当Ajax请求网址时拦截并回传假的数据,

mockJSON(https://github.com/mennovanslooten/mockJSON)则有点像是Json数据的Data Generater,根据我们指定的格式随机数生成回传的Json数据。

首先我们来看个例子,假设我们目前需要开发一个网站,它会使用Ajax请求/WebApi/GetUserData,取得User数据,并将所取得的数据显示在页面上,如下面代码:

<h1>User Data</h1>
    <div id="result">
</div>

<script type="text/javascript">
$.ajax({
    url: ‘/WebApi/GetUserData‘,
    type: ‘GET‘,
    dataType: ‘json‘,
    error: function(xhr) {
        alert(‘无法获取资料!‘);
    },
    success: function(response) {
      $("#result").append(response);    }
});
</script>

执行代码,我们可以发现这段程序是无法成功执行的,因为/WebApi/GetUserData并不存在,所以会跳出错误信息:

这时候Mockjax就派上用场了,我们在请求ajax之前加上这段代码:

$.mockjax({
    url: ‘/WebApi/GetUserData‘,
    // 返回的HTTP状态码
    status: 200,
    // 响应时间
    responseTime: 750,
    // 响应的HTTP内容类型
    contentType: ‘application/json‘,
    // 返回的内容
    responseText:‘User Information‘
});

这代表我们mock了JQuery的Ajax,当使用Ajax请求/WebApi/GetUserData这个地址时,将会花费750ms的时间,回传status code 200,以及‘User Information‘这个字符串。重新执行一次网页,可以看到执行成功了

当然,实际上在Ajax请求时并不会只回传一个字符串,我们可能需要Json格式的数据。下面我们改写下程序代码来请求Json数据

$(function() {
    $.mockjax({
            url: ‘/WebApi/GetUserData‘,
            // 返回的HTTP状态码
            status: 200,
            // 响应时间
            responseTime: 750,
            // 响应的HTTP内容类型
            contentType: ‘application/json‘,
            // 返回的内容
            responseText: $.mockJSON.generateFromTemplate({
                "user": [{
                    "id": 1,
                    "name": "david",
                    "birthday": "2001/01/26"
                }]
            })

        });
        $.ajax({
            url: ‘/WebApi/GetUserData‘,
            type: ‘GET‘,
            dataType: ‘json‘,
            error: function(xhr) {
                alert(‘无法获取资料!‘);
            },
            success: function(response) {
                var data = response.user;
                for (var i = 0; i < data.length; i++) {
                    $("#result").append(
                        "<ul>" +
                        "<li>ID: " + data[i].id + "</li>" +
                        "<li>Name: " + data[i].name + "</li>" +
                        "<li>Birthday: " + data[i].birthday + "</li>" +
                        "</ul>" +
                        "<hr />"
                    );
                }
            }
        });

    });

执行之后,可以看到成功接收Json数据,并且显示在页面上:

如果我们需要的是大量的数据,我们光是拼好Json数据就会花费掉许多的时间, 该怎么办呢? 这时候我们就需要mockJSON, 它可以根据我们所制定的规则, 来产生JSON数据,我们修改Mockjax的responseText部分使用mockJSON来产生数据:

$.mockJSON.data.USER_NAME = [‘张三‘, ‘李四‘, ‘王五‘, ‘赵六‘, ‘孙七‘, ‘周八‘, ‘吴九‘, ‘郑十‘];
$.mockjax({
    url: ‘/WebApi/GetUserData‘,
    // 返回的HTTP状态码
    status: 200,
    // 响应时间
     responseTime: 750,
    // 响应的HTTP内容类型
    contentType: ‘application/json‘,
    // 返回的内容
    responseText: $.mockJSON.generateFromTemplate({
        "user|3-6": [{
        "id|+1": 1,
        "name": "@USER_NAME",
             "birthday": "@DATE_YYYY/@DATE_MM/@DATE_DD"
        }]
    })
});

首先我们先在mockJSON中添加了自定义的USER_NAME变量。

在设置responseText时我使用了$.mockJSON.generateFromTemplate方法, 并设定了user数据产生的规则如下,

  • 产生 3-6个user, 每个user之中有以下字段,
  • id从1开始依序增加, 每次+1,
  • name产生我们上面定义的USER_NAME中的名字,
  • birthday使用mockJSON内置的DATE_YYYY、DATE_MM和DATE_DD产生随机的日期.

重新执行网页, 我们可以发现每次重整网页结果都不同, 这可以用来模拟查询出不同的数据

当然,Mockjax还有许多其他的功能,(例如使用proxy或者callback函数来返回响应数据,修改HTTP响应头等)大家可以到https://github.com/jakerella/jquery-mockjax上面查看。

时间: 2024-10-06 19:59:40

Ajax模拟插件 - Mockjax介绍的相关文章

基于jquery的ajax分页插件(demo+源码)

前几天打开自己的博客园主页,无意间发现自己的园龄竟然有4年之久了.可是看自己的博客列表却是空空如也,其实之前也有写过,但是一直没发布(然而好像并没有什么卵用).刚开始学习编程时就接触到博客园,且在博客园学习了很多的知识,看过很多人的分享.说来也惭愧,自己没能为园友们分享自己的所学所得(毕竟水平比较差). 过去的一年也是辗转了几个城市换了几份工作(注定本命年不太平?).八月份来到现在所在的公司(OTA行业),公司是做互联网的,所以可能大家的前端都屌屌的?之前一直从事.NET开发(现在在这边也是),

Wookmark-jQuery-master 瀑布流插件使用介绍,含个人测试DEMO

要求 必备知识 本文要求基本了解 Html/CSS,  JavaScript/JQuery. 开发环境 Dreamweaver CS6 / Chrome浏览器 演示地址 演示地址 资料下载 测试预览截图(抬抬你的鼠标就可以看到演示地址哦): 程序核心代码看这里: $(function(){ function show(){ var colors=["#BA4A3A","#5BB5D6","#8EA83B","#EE5C92",

使用gulp创建ajax模拟请求

概述 之前一直使用gulp构建前端项目,这个基于node流并崇尚“编程而非配置”的工具让我深深的爱上了他.强大的gulp能做到的不仅仅是压缩和合并js.css,它能做到的还有更多.今天我给大家带来使用gulp前台创建ajax模拟数据. 解决的问题 开发时,后端还没完成数据输出,前端只好写静态模拟数据. l 数据太长了,将数据写在js文件里,完成后挨个改url. l 某些逻辑复杂的代码,加入或去除模拟数据时得小心翼翼. l 想要尽可能还原真实的数据,要么编写更多代码,要么手动修改模拟数据. l 特

浅谈jQuery Pagination Ajax 分页插件的使用

插件介绍 此插件是jQuery的ajax分页插件.分页切换时无刷新也无延迟,因为是一次性加载的.如果你用到此插件作分页的时候,涉及到的数据量大,建议不要使用此插件,因为加载慢会导致用户体验不好! 插件使用 此插件使用比较简单.主要引入以下文件就可以用了 1.jquery.js依赖库 2.pagination.css 这个主要是样式,我们在元素使用的时候将分页列表放在class类为pagination的标签内即可 <div class='pagination'></div> 3.jq

javascript表单的Ajax 提交插件的使用

Ajax 提交插件 form.js 表单的下载地址:官方网站:http://malsup.com/jquery/form/ form.js 插件有两个核心方法:ajaxForm()和ajaxSubmit(),它们集合了从控制表单元素到决定如何管理提交进行的功能. //ajaxForm 提交方式 $('#reg').ajaxForm(function () { alert('提交成功!'); }); 使用ajaxForm()方法,会直接实现ajax 提交.自动阻止了默认行为,而它提交的默认页面是f

Xcode Alcatraz插件管理介绍和使用

Xcode Alcatraz插件管理介绍和使用http://www.jianshu.com/p/7a2484123bf6 1.简介 Alcatraz是一个能帮你管理Xcode插件丶模版及颜色配置的工具.它可以直接集成在Xcode的图形界面中,让你感觉就像在使用Xcode自带的功能一样. 2.安装和删除 使用如下的终端来安装Alcatraz: curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.s

jquery ajax分页插件特效源代码demo完整版

原文:jquery ajax分页插件特效源代码demo完整版 源代码下载地址:http://www.zuidaima.com/share/1550463586798592.htm 网上找的,原版本没有测试数据和建表脚本啥的,我给加上了.

[原创]jquery+css3打造一款ajax分页插件

最近公司的项目将好多分页改成了ajax的前台分页以前写的分页插件就不好用了,遂重写一个 支持IE6+,但没有动画效果如果没有硬需求,个人认为没必要多写js让动画在这些浏览器中实现css3的动画本来就是帮我们取代js中这部分动画代码的使js更纯粹地去实现逻辑 效果图如下: 调用代码如下: 包括常用的加载失败重试,参数可配置是否能手动输入页码,设置按钮数目,可以调用多个page等等,调用代码很简便 <script type="text/javascript"> var kpag

jquery和ajax的关系详细介绍【转】

jquery和ajax的关系详细介绍 http://www.jb51.net/article/43965.htm