angularjs-angular http 服务模块 测试问题

问题描述

angular http 服务模块 测试问题

服务模块代码为
/*
* 向后台GET数据
*/
this.Get = function (url, data, successCb, errCb) {
$http({
method: 'GET',
url: url,
params: data
}).success(function (response, status, headers, config) {
if (successCb && typeof successCb === 'function') {
successCb(response, status, headers, config);
}
}).error(function (response) {
if (errCb && typeof errCb === 'function') {
errCb(response);
}
});
};

  /*
   * 向后台Post数据
   */
  this.Post = function (url, data, successCb, errCb) {
    $http.post(url, data).success(function (response, status, headers, config) {
      if (successCb && typeof successCb === 'function') {
        successCb(response, status, headers, config);
      }
    }).error(function (response) {
      if (errCb && typeof errCb === 'function') {
        errCb(response);
      }
    });
  };

        测试服务代码为:

        describe('Service: Ajax', function () {
// instantiate service
var Ajax, $http, $httpBackend, responseData;

// load the service's module
beforeEach(module('coursewareApp.services.Ajax'));

beforeEach(inject(function (_Ajax_, _$http_, _$httpBackend_) {
  Ajax = _Ajax_;
  $http = _$http_;
  $httpBackend = _$httpBackend_;
}));

afterEach(function () {
  $httpBackend.verifyNoOutstandingExpectation();
  $httpBackend.verifyNoOutstandingRequest();
});

it('should do something', function () {
  expect(!!Ajax).toBe(true);
  console.log($httpBackend);
  // 设置期待请求和响应
  $httpBackend
    .when('get', '/ajaxGet?id=0')
    .respond([{name: 'test1'}, {name: 'test2'}]);

  $httpBackend
    .when('post', '/ajaxPost', function (data) {
      console.log(data);
    })
    .respond({status: 'success'});

  // 调用测试代码
  Ajax.Get('/ajaxGet',
    //{name: 'data-123'},
    function (response, status) {
      responseData = response;
    },
    function (response) {
      console.log(response);
    });

// Ajax.Post('http://localhost:8080/ajaxPost',
// {data: 'test-data'},
// function () {},
// function () {});

  // 模拟响应
  $httpBackend.flush();

  // 核实结果
  //expect(responseData.length).toEqual(2);
  console.log(responseData);
});

});

报错
Error: Unexpected request: GET /ajaxGet
No more request expected

有谁知道应该怎么解决???

解决方案

$httpBackend
.when('get', '/ajaxGet?id=0')
.respond([{name: 'test1'}, {name: 'test2'}]);

修改为:

 $httpBackend
.when('get', '/ajaxGet')
.respond([{name: 'test1'}, {name: 'test2'}]);
时间: 2024-10-31 06:29:15

angularjs-angular http 服务模块 测试问题的相关文章

【AngularJS】—— 13 服务Service

$http的使用 AngularJS为我们提供了很多种服务,$http用于发送http请求,动态的请求数据. 这样就需要使用web容器来运行代码了,先看看程序源码,视图方面还是跟普通的代码相同: <div ng-controller="myAppCtrl"> <ul> <li ng-repeat="user in users"> {{user.name}} </li> </ul> </div>

angular 自定义服务

AngularJS支持使用服务的体系结构"关注点分离"的概念.服务是JavaScript函数,并负责只做一个特定的任务.这也使得他们即维护和测试的单独实体.控制器,过滤器可以调用它们作为需求的基础.服务使用AngularJS的依赖注入机制注入正常. AngularJS提供例如许多内在的服务,如:$http, $route, $window, $location等.每个服务负责例如一个特定的任务,$http是用来创建AJAX调用,以获得服务器的数据. $route用来定义路由信息等.内置

《Cisco安全防火墙服务模块(FWSM)解决方案》——2.6 硬件架构

2.6 硬件架构 Cisco安全防火墙服务模块(FWSM)解决方案 FWSM的架构由4个主要部件组成:网络处理器(NP)1A(NP1A)和1B(NP1B).网络处理器2(NP2)以及运行FWSM代码的处理器(FWSM综合处理器). FWSM通过一个全双工的以6Gbit/s以太通道(GEC)连接到6500或7600的背板,按进出双向来计算总共是12Gbit/s的带宽.而且从背板到NP1A和NP1B各有一条3Gbit/s的连接. 用GEC实现流量负载均衡时有一点需要考虑.在默认情况下,对于非IP流量

AngularJS动态加载模块和依赖的方法分析_AngularJS

本文实例讲述了AngularJS动态加载模块和依赖的方法.分享给大家供大家参考,具体如下: 前言 由于AngularJS是单页面应用框架,在正常的情况下,会在访问页面的时候将所有的CSS.JavaScript文件都加载进来.文件不多的时候,页面启动速度倒不会影响太多.但是一旦文件数太多或者加载的第三方库比较大的时候,就会影响页面启动速度.因此对于应用规模大.文件数比较多或者加载的第三方库比较大的时候,采用动态加载JS或者动态加载模块会极大提升页面的启动速度.本文将介绍如何利用ocLazyLoad

AngularJs 动态加载模块和依赖_AngularJS

最近项目比较忙额,白天要上班,晚上回来还需要做Angular知识点的ppt给同事,毕竟年底要辞职了,项目的后续开发还是需要有人接手的,所以就占用了晚上学习的时间.本来一直不打算写这些第三方插件的学习笔记,不过觉得按需加载模块并且成功使用这个确实是个好处,还是记录下来吧.基于本兽没怎么深入的使用requireJs,所以本兽不知道这个和requireJs有什么区别,也不能清晰的说明这到底算不算Angular的按需加载. 为了实现这篇学习笔记知识点的效果,我们需要用到: angular:https:/

AngularJS中$http服务常用的应用及参数_AngularJS

前言 $http 服务:只是简单封装了浏览器原生的XMLHttpRequest对象,接收一个参数,这个参数是一个对象,包含了用来生成HTTP请求的配置内容,这个函数返回一个promise对象,具有success和error方法. $http服务的使用场景: var promise = $http({ method:"post", // 可以是get,post,put, delete,head,jsonp;常使用的是get,post url:"./data.json"

《Cisco安全防火墙服务模块(FWSM)解决方案》——导读

前言 Cisco安全防火墙服务模块(FWSM)解决方案 防火墙是一种用来保护网络基础设置的重要组件.要维护一个安全的网络,必须深入理解这些设备的运行机制. 本书从硬件和软件两个角度对防火墙服务模块(FWSM)的功能进行了讲解,同时附带有在不同部署场景中设计.实施.运行和管理FWSM的配置案例,因此本书是一本相当实用的FWSM设计指导. 本书的读者对象 本书主要针对那些设计.实施或维护FWSM(如安全/网络管理员)的人员而写.为了能从本书中获取最大收益,读者最好具有至少中级以上的网络和安全知识.

《Cisco防火墙》一2.2 防火墙服务模块的概述

2.2 防火墙服务模块的概述 Cisco防火墙 Cisco的防火墙服务模块(Firewall Service Module,FWSM)是为其Catalyst 6500系列交换机量身打造的防火墙解决方案,它可以提供Cisco ASA的状态化监控技术.FWSM与ASA防火墙系列有着共同的祖先,那就是PIX防火墙.自然而然,这三款产品(命令行界面中)的配置命令和配置思路都是非常接近的. FWSM服务模块是专用于防火墙服务的模块.这款产品可以与Catalyst 6500系列的其他服务模块(如应用控制引擎

《Cisco安全防火墙服务模块(FWSM)解决方案》——2.7 软件架构

2.7 软件架构 Cisco安全防火墙服务模块(FWSM)解决方案 对于基于计算机的任何系统来说,另外一个组件就是软件.无论硬件多么复杂,如果没有安装操作系统,则它无异于一个发射器或纸镇1. 幸好FWSM拥有许多可以利用的特性和可以旋转的"傻瓜式旋钮".理解软件如何处理流量只是一个基础,在下一节,你还需要花费大量的时间,以求对软件特性有一个非常详细的了解. 首先要对输入的数据包进行分段检查,如果有必要,将对数据包进行重组,然后再发送到"管理/路由"决策进程.该进程用