AngularJs量角器:将ngMockE2E与手动引导的应用程序配合使用

时间:2014-07-17 16:48:37

标签: javascript angularjs protractor

我正在尝试使用Protractor模拟来自angularjs服务的数据。我已经能够通过使用以下技术在其他应用程序中成功完成此操作。

创建可通过protractor.addMockModule

配置的模拟模块
 var httpBackendMock = function() {
    angular.module('mockBackend', ['ngMockE2E', 'MyApp'])
    .value('configData', arguments[0])
    .run(function($httpBackend,configData) {
        console.log('bootstrapped!');
        $httpBackend.whenPOST(/.*/).respond(configData.postHeader, configData.postResponse);
    });
};
module.exports.httpBackendMock = httpBackendMock;

然后创建一个看起来像这样的量角器测试

describe('Mocking an httpbackend', function() {

var sampleData = require('./sampleData/blog/normalLanding.json');
var configObject = require('./utils/backendConfig.json');//passed To addMockModule to be accessed via arguments[0]
var MyMockedBackend = require('./utils/httpBackendMock.js');

var ptor = protractor.getInstance();

configObject.postHeader = 200;
configObject.postResponse = sampleData;

 it('Should mock a backnd', function(){
     ptor.addMockModule('mockBackend', MyMockBackend.httpBackendMock, configObject);
     ptor.get('/blog');
    });
});

这适用于

的应用
  • 页面上唯一的角度应用程序
  • 是通过ng-app
  • 引导的

但是,当使用手动引导的应用程序时,应用程序会调用并返回实际服务的结果,而不是所需的模拟响应。此外,不会抛出任何错误。例如,我试图用相同的数据响应所有POST请求。

我的配置文件中有protractors rootElement设置为app bootstraps的标记。

这种设置/方法有什么特别的错误吗?或者,与使用手动引导的应用程序调用addMockModule相关的量角器执行顺序是一个问题吗?

这是一个github repo的链接,其中包含Angular网站上的Angular Phonecat Tutorial的一个工作示例。示例位于test / e2e / utils和scenerios.js

Github example

干杯!

0 个答案:

没有答案