zoukankan      html  css  js  c++  java
  • WebUI实践之使用AngularJS 进行独立开发(模拟后台)

    条件与目标:

    1. 前端使用AngularJS,接口服务均使用$http访问。
    2. 与后台协商好接口,完全独立并行开发,不用等待后台开发完接口才能进行页面测试。
    3. 需要gulp打包系统参与,即打包之前可以模拟后台接口测试,而打包之后则为Release版本,需要真实后台服务参与。
    4. 虽不能包括所有情况,但大部分基于数据的场景都可实用。

    实践方法:

    1. 在index.html中创建gulp打包区块,以<!--build:js js/app.min.js-->开始,以<!--/build-->结束。
    2. 在index.html中引用angular-mocks.js(模拟http数据返回插件)。
    3. 创建testapi/mockinit.js(用于初始化数据模拟框架),代码如下:
      angular.module('mocktest',['ngMockE2E']).run(function($httpBackend){    
          var http=$httpBackend;
          //pass    
      
          http.whenGET(/ *.html/).passThrough();
          http.whenGET(/ *.js/).passThrough();
          http.whenGET(/ *.css/).passThrough();
          http.whenGET(/ *.jpg/).passThrough();
      
      
          //testlogin
          http.whenPOST(APPURL+'/service/user/login').respond(function(m,url,data){
      
              var param = angular.fromJson(data);
      
              var ret = {"result":-1,"message":"测试密码错误"};    
              }
              return [200,ret];
          });
      
      
      });
      View Code
    4. 根据功能创建其它测试模块,如testapi/moudlexxxmock.js:
      angular.module('mocktest').run(function($httpBackend){
      
          var http=$httpBackend;
      
          //test
          http.whenPOST(new RegExp(APPURL+'/service/user/add')).respond(function(m,url,data){
      
              var ret = {"result":0,"message":""};
              return [200,ret];
          });
      });
      View Code
    5. 在index.html 打包区块中,引用所有的testapi目录下的js文件:
          <script src="testapi/mockinit.js"></script>
          <script src="testapi/moduleusermock.js"></script>
          <script src="testapi/modulexxxmock.js"></script>
      View Code
    6. 将此工程放入web容器中,运行未打包的程序,测试所有页面与返回数据的处理逻辑,此时已不需要后台web服务参与。
    7. 创建一个空的Mockjs,如gulpmock.js,代码如下:
      angular.module('mocktest',[]);
    8. gulpfile中,在打包js时,不打包testapi中的js,而打包gulpmock.js,生成的app.min.js中已没有模拟的后台接口,直接使用后台服务接口。

    结论:

      虽然不知此方法是否为违背mock的初衷,但确实在独立开发与独立测试中取得较好的效果,非AngularJS工程可参考 Mockjax

  • 相关阅读:
    ServletContext
    PS切图
    session实战案例
    Array Destruction
    Session详解
    No More Inversions 全网最详细 回文序列的逆序对
    Sum of Paths (DP、预处理)
    cookie详解
    web的状态管理
    简单最大流/最小割复习
  • 原文地址:https://www.cnblogs.com/coder-fang/p/6181867.html
Copyright © 2011-2022 走看看