4

我正在实施一个 Angular 应用程序。在 e2e 测试中,我想模拟一些对服务器的请求并通过一些,即我想使用e2e httpBackend

这是如何使用 HttpBackend 的 Vijittas 示例。

` http://jsfiddle.net/vojtajina/DQHdk/ `

现在,这是一个难题:当我在测试时,我希望我的应用程序能够使用开发模块进行引导,即

<html ng-app="AppDevModule">

当我运行服务器时,我希望包含生产模块。

<html ng-app="AppCoreModule">

但是每当我想在开发模式和生产模式之间进行更改时,我认为更改 HTML 是不合理的。

e2e httpBackend 的文档

提供了包含开发模块的代码片段,但他们没有提到任何有关问题和包含开发应用程序的内容。

我正在使用有角睾丸。我尝试在 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);

        });
    });

但是,事情并没有像我预期的那样发展。

4

1 回答 1

1

基于以下线程: https ://groups.google.com/forum/?fromgroups=#!topic/angular/3Xm7ZOmhNp0 看起来模拟后端在尚未实现真实后端时使用。在这到位之后,建议使用真正的版本,因为维护两个版本可能会导致测试无法真正证明生产应用程序正常工作。

总而言之,应尽可能避免在测试和生产两个应用程序模块之间切换。

于 2013-05-06T13:19:25.707 回答