如何模拟一个AJAX请求? [英] How to mock an AJAX request?

查看:648
本文介绍了如何模拟一个AJAX请求?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么是修改scenarios.js嘲笑一个终端到终端的测试过程中一个AJAX请求的最简单方法?

 <!DOCTYPE HTML>
< HTML LANG =ENNG-应用=对myApp>
< HEAD>
  <间的charset =UTF-8>
  <标题>我测试AngularJS应用< /标题>
  &所述; SCRIPT SRC =htt​​p://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js>&下; /脚本>
  &LT;脚本src=\"http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular-resource.min.js\"></script>  &LT; SCRIPT LANGUAGE =JavaScript的类型=文/ JavaScript的&GT;
      angular.module('对myApp',['ngResource']);
      功能的PlayerController($范围,$资源){
        $ scope.player = $资源('player.json')得到()。
      }
    &LT; / SCRIPT&GT;&LT; /头&GT;
  &LT;机身NG控制器=的PlayerController&GT;
    &所述p为H.;你好{{player.name}}&下; / P&GT;
  &LT; /身体GT;
&LT; / HTML&GT;

播放从服务器上一个名为player.json文件获取正确取出和以下测试通过。我如何在这个测试和prevent抓取回服务器传递不同的JSON?

  / *
我如何传递
player.json - &GT; {名:克里斯}
* /
描述(我的应用程序',函数(){  beforeEach(函数(){
    。浏览器()的NavigateTo(../../应用程序/ index.html的');
  });  它('应该载入从player.json球员,函数(){
    期待(元素('P:第一'。)文本())。
        toMatch(你好克里斯);
    暂停();
  });});


解决方案

您应该使用 $ httpBackend从ngMockE2E模块来模拟HTTP请求。看看的文档。

What is the simplest way to modify scenarios.js to mock an AJAX request during an end-to-end test?

<!doctype html>
<html lang="en" ng-app="myApp">
<head>
  <meta charset="utf-8">
  <title>My Test AngularJS App</title>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular-resource.min.js"></script>

  <script language="javascript" type="text/javascript">
      angular.module('myApp', ['ngResource']);
      function PlayerController($scope,$resource){
        $scope.player = $resource('player.json').get();
      }
    </script>

</head>
  <body ng-controller="PlayerController">
    <p>Hello {{player.name}}</p>
  </body>
</html>

Player gets correctly fetched from a file named player.json on the server and the following test passes. How do I pass different json in to this test and prevent the fetch back to the server?

/*
How do I pass in
player.json -> {"name":"Chris"}
*/
describe('my app', function() {

  beforeEach(function() {
    browser().navigateTo('../../app/index.html');
  });

  it('should load player from player.json', function() {
    expect(element('p:first').text()).
        toMatch("Hello Chris");
    pause();
  });

});

解决方案

You should use $httpBackend from ngMockE2E module to mock http requests. Take a look at the docs.

这篇关于如何模拟一个AJAX请求?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆