使用httpBackend [Protractor]模拟API

时间:2015-06-19 01:09:34

标签: angularjs protractor angularjs-e2e ngmocke2e

我正在为REST API开发一个前端应用程序。我正在使用Protractor进行端到端测试,并且API被模拟了。我能够模拟AUTHtoken API响应并导航到选定的URL,但在目标URL下显示的页面呈现为空。这是我的代码:

describe('e2e tests', function() {

it('FO tests', function() {

browser.addMockModule('WebClientApp', function() {
  console.log('test');
  angular.module('WebClientApp', ['ngMockE2E'])
  .run(function($httpBackend) {
    console.log('test2');

    $httpBackend.whenPOST('http://0.0.0.0:9000/api/organizations').respond(200);
    $httpBackend.whenPOST('/api/auth/get_resource_by_token').respond(200);
    $httpBackend.whenGET('/api/auth/current_resource').respond(200);
    $httpBackend.whenGET(/.*/).respond(200);
  });

});
browser.getRegisteredMockModules();

browser.get('http://0.0.0.0:9000/#/organizations/profile');

browser.pause();
});
});

可悲的是,量角器控制台在页面渲染过程中没有提供有关错误的信息。

1 个答案:

答案 0 :(得分:-1)

实际上,状态为200的响应无法确保您已通过身份验证。您需要传递并处理一些令牌/会话标头。

还需要$httpBackend.flush();。然后测试应该通过。

$httpBackend.expectGET('http://0.0.0.0:9000/#/organizations/profile');
$httpBackend.flush();

Angular doc for $httpBackend

中的最后一个 it(...)块会有更多解释