2013-03-07 52 views
4

我正在實施一個Angular應用程序。在e2e測試中,我想模擬一些對服務器的請求,並通過一些請求,即我想使用e2e httpBackend在角度測試/開發模塊和生產模塊之間切換

這裏是Vijittas如何使用HttpBackend的例子。

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

現在,這裏是兩難境地:當我測試我想我的應用程序與開發模塊即

<html ng-app="AppDevModule"> 

自舉,當我運行服務器我要包括生產模塊。

<html ng-app="AppCoreModule"> 

但是我不認爲每當我想在開發模式和生產模式之間切換時都要更改HTML。

The documentation of e2e httpBackend

提供了一個代碼片段,包括開發模塊,但他們沒有提到這個問題和開發應用列入任何東西。

我正在使用棱角分明。我試圖將其配置在端對端的測試是這樣的:

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); 

     }); 
    }); 

但是,正如我預料的事情不要去。基於以下螺紋

回答

1

https://groups.google.com/forum/?fromgroups=#!topic/angular/3Xm7ZOmhNp0 它看起來像模擬後端的精神疾病時要使用真正的一個尚未實現。在此之後,建議使用真正的維護兩個版本,可能會導致測試不能真正證明生產應用程序正常工作。

總結在兩個應用模塊之間進行測試和生產切換應儘可能避免。