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実際のバックエンドがまだ実装されていない場合に、モック バックエンドが使用される ように見えます。2 つのバージョンを維持すると、実稼働アプリケーションが正しく動作することをテストで実際に証明できない可能性があるため、これを配置した後は、実際のバージョンを使用することをお勧めします。

要約すると、テスト用と本番用の 2 つのアプリケーション モジュール間の切り替えは、可能な限り避ける必要があります。

于 2013-05-06T13:19:25.707 に答える