我正在尝试使用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');
});
});
这适用于
的应用但是,当使用手动引导的应用程序时,应用程序会调用并返回实际服务的结果,而不是所需的模拟响应。此外,不会抛出任何错误。例如,我试图用相同的数据响应所有POST请求。
我的配置文件中有protractors rootElement
设置为app bootstraps的标记。
这种设置/方法有什么特别的错误吗?或者,与使用手动引导的应用程序调用addMockModule相关的量角器执行顺序是一个问题吗?
这是一个github repo的链接,其中包含Angular网站上的Angular Phonecat Tutorial的一个工作示例。示例位于test / e2e / utils和scenerios.js
中干杯!