如何模拟AJAX请求?

Chr*_*ris 6 testing end-to-end jasmine angularjs

修改scenario.js以在端到端测试期间模拟AJAX请求的最简单方法是什么?

<!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>
Run Code Online (Sandbox Code Playgroud)

从服务器上名为player.json的文件中正确获取播放器,并通过以下测试.如何将不同的json传入此测试并阻止获取回服务器?

/*
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();
  });

});
Run Code Online (Sandbox Code Playgroud)

Cai*_*nha 4

您应该使用ngMockE2E 模块中的 $httpBackend来模拟 http 请求。看一下文档。

  • 我的观点是,我在文档中没有看到 ngMockE2E 示例。我正在寻找添加到scenario.js 中的几行代码。 (3认同)
  • 好的。让我说清楚。我不明白如何按照 Caio 的建议进行操作。文档假设有一些魔力,例如“之后,使用这个新模块引导您的应用程序。”。如何做到这一点? (3认同)
  • 需要明确的是,ngMockE2E 代码进入哪个文件?需要如何修改 runner.html 或scenario.js 文件才能实现奇迹? (2认同)