2016-04-29 6 views
5

ngMockを利用している角度テスト(1.2.x)があります。私のプロジェクトは、sinon.fakeServerに依存する治具システムを持っています。私の単体テストでは、$httpBackendとは対照的にこれを使用したいと思います。

ngMockE2E試験角はpassthroughの方法を提供しますが、単体テストの明確な等価物はありません。合理的なseems to be単体テストは決して(サーバーへ)パススルーするべきではありませんが、私の状況では、私は角度以外のモックにパススルーしようとしています。

私の戦略は、.whenGet.whenPostの要求に一致するシムを作成し、それらを偽のサーバーにルーティングすることです。

しかし、より良い方法は単に$httpBackendを「オフにする」ことです。これを行う方法はありますか?

+0

「passThrough」を試しましたか? https://docs.angularjs.org/api/ngMockE2E/service/$httpBackend –

+0

これは明らかに 'ngMockE2E'でのみ有効です。 – vpiTriumph

答えて

1

This解決方法

したがって、ngMockE2Eの$ httpBackendを使用することをお勧めします。実際にあなたのテストがXHRを要求した場合、それは「単体テスト」ではありません。

+3

これは理論的に質問に答えるかもしれませんが、答えの本質的な部分をここに含め、参照のためのリンクを提供することが望ましいです(// meta.stackoverflow.com/q/8259)。 – manetsus

2

あなたが

angular.module('httpReal', ['ng']) 
    .config(['$provide', function($provide) { 
     $provide.decorator('$httpBackend', function() { 
      return angular.injector(['ng']).get('$httpBackend'); 
     }); 
    }]) 
    .service('httpReal', ['$rootScope', function($rootScope) { 
     this.submit = function() { 
      $rootScope.$digest(); 
     }; 
    }]); 

あなたがhttpBackendを復元することができるこの方法を試してみたいことがあります。 詳細については、E2E mock $httpBackend doesn't actually passThrough for me

関連する問題