我正在实施一个Angular应用程序。在e2e测试中,我想模拟一些对服务器的请求并传递一些,即我想使用e2e httpBackend。
这是Vijittas如何使用HttpBackend的例子。
` http://jsfiddle.net/vojtajina/DQHdk/ `
现在,这就是困境:当我测试时,我希望我的应用程序能够使用开发模块进行boostrap,即
<html ng-app="AppDevModule">
当我运行服务器时,我希望包含生产模块。
<html ng-app="AppCoreModule">
但是,每当我想在开发模式和生产模式之间进行更改时,我都认为更改HTML是不合理的。
The documentation of e2e httpBackend
提供了一个包含开发模块的代码片段,但他们没有提到任何有关该问题和包含dev应用程序的内容。
我正在使用角度测试。我尝试在e2e测试中配置它,如下所示:
describe("DHCP Client e2e. ", function () {
beforeEach(function () {
var fakeAppModule = angular.module('AppCoreModule', ['AppCoreModule', 'ngMockE2E']);
fakeAppModule.run(function ($httpBackEnd) {
var networkInterface = [
{
'secondarySubnets':[
{"dhcpOfferOptions":{"dnsServers":["8.8.8.8"], "offerTime":"400", "leaseTime":"600"}, "rangesLimits":[],
"network":"192.168.0.0", "slash":"24", "gateway":"192.168.0.1",
"isDynamic":"dynamic", "description":"asdsadsa"}
]
},
{
'secondarySubnets':[
{"dhcpOfferOptions":{"dnsServers":["8.8.8.8"], "offerTime":"400", "leaseTime":"600"}, "rangesLimits":[],
"network":"192.168.0.0", "slash":"24", "gateway":"192.168.0.1",
"isDynamic":"dynamic", "description":"asdsadsa"}
]
}
];
$httpBackEnd.whenGET('/^\/view\//').respond(200, '<div></div>');
$httpBackEnd.whenGET('/r/networkInterface').respond(200, networkInterface);
$httpBackEnd.whenGET('./../main/webapp/r/networkInterface').respond(200, networkInterface);
});
fakeAppModule.config(function ($provide) {
$provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator);
});
});
但是,事情并没有像我预期的那样发展。
答案 0 :(得分:1)
基于以下主题: https://groups.google.com/forum/?fromgroups=#!topic/angular/3Xm7ZOmhNp0 它看起来像模拟后端是真正的后端尚未实现。在此之后,建议使用真实的版本作为维护两个版本可能导致测试不能真正证明生产应用程序正常工作。
如果可能的话,应该避免在两个应用模块之间进行切换以进行测试和生产。