我正在使用 Protractor 使用以下模式在 Angular 网站上模拟一些端点:
// mock.js
// adding the mock module and passing it data
Mock.prototype.all = {
default: function() {
browser.addMockModule('httpBackendMock', mockModules.all, {
data: data
})
}
}
// mockmodules.js
// add dependencies to module and inject it
exports.all = function() {
$httpBackend.whenGET(/user/).respond(function() {
return [200, data.mockData.data];
});
$httpBackend.whenGET(/.*/).passThrough();
$httpBackend.whenPOST(/.*/).passThrough();
angular.module('httpBackendMock' ['ngMockE2E', 'sportsbook-app'])
.value('data', {
'mockData': arguments[0],
'count': 0
})
.run(runBlock);
runBlock.$inject = ['$httpBackend', 'data', 'eventDataSourceManager'];
}
// test-spec.js
// call mock from test
it("Mock", function() {
mock.all.default();
});
现在这工作正常,但我希望能够通过拥有多个发送不同数据的模块来添加更多模块。例子:
Mock.prototype.all = {
default: function() {
browser.addMockModule('httpBackendMock', mockModules.allDefault, {
data: data
})
},
user: function() {
browser.addMockModule('user', mockModules.allUser, {
userData: userData
})
}
}
it("Mock", function() {
mock.all.default();
mock.all.user();
});
像这样,所有的模拟似乎都不起作用。
同样在 selenium 服务器中,我可以看到两个模块的名称都被找到:
Executing: [execute script: angular.resumeBootstrap(arguments[0]);, [[protractorBaseModule_, httpBackendMock, user]]])
起初我以为问题出在
$httpBackend.whenGET(/.*/).passThrough();
$httpBackend.whenPOST(/.*/).passThrough();
尝试将其添加到单独的模块并在调用所有其他模块后调用它,但它仍然不起作用。有任何想法吗?