angularjs - 使用 httpBackend [Protractor] 模拟 API

标签 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();
});
});

遗憾的是,Protractor 控制台不提供有关页面呈现期间错误的信息。

最佳答案

实际上,状态为 200 的响应并不能确保您已通过身份验证。您需要传递和处理一些 token / session header 。

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

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

更多的解释可以在Angular doc for $httpBackend 的最后一个it(...) block 中找到。

关于angularjs - 使用 httpBackend [Protractor] 模拟 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928354/

相关文章:

google-chrome - Protractor woant 运行我的脚本

angularjs - Angular.js ui-grid 自定义日期过滤器

angularjs ng-click 默默地吃错误

javascript - 在 Angular JS 中过滤月份

javascript - Protractor - 在 ng-repeat 中获取子元素的文本

angularjs - Javascript.confirm() 和 Angularjs Karma e2e 测试

javascript - 单击 Angular JS 中的输入字段事件

javascript - 带 Angular 模拟的 Protractor 抛出 "Window Not Defined"

javascript - 在 AngularJS 应用程序中测试使用 Protractor 将文件上传到文件选择器

javascript - Protractor - Appium -