2013-02-19 59 views
9

我真的很想找到最簡單的方式讓我的角應用使用模擬後端服務。

任何指針都會很棒,這是一個示例應用程序,展示瞭如何編寫一個簡單的應用程序來使用它來完成這項工作。 TNX!

回答

11

這裏是一個sample plunkr使用$ httpBackend作爲示例來回答this question以後端開發爲例。

主要的事情,我加入到plnkr來得到這個工作是:

  1. 引用的angular-mocks.js文件中的HTML。
  2. 新增ngMockE2E在angular.module需要app.js
  3. 注入$httpBackend到app.run 3線陣列,並在請求得到一個特定的URL添加代碼告訴模擬後端如何處理響應。

這主要取自$httpBackend文檔。請注意,您可以爲任何想要實際打到後端的呼叫執行.passThrough()(繞過模擬)。如果後端的某些部分已經在運行,這將特別有用。

+0

「.passThrough()」將裝載模板也是有用的,否則‘$ httpBackend’干涉通常的模板加載機制。例如,提到 '$ httpBackend.whenGET(/ \。html $ /)。passThrough();' – 2015-07-21 13:31:00

2

下面是各種例子拉到一個基本的模板:

'use strict'; 

(function() { 

    if(!document.URL.match(/\?nobackend$/)){ 
     // if not requested only add a blank stub to app dependency. 
     angular.module('ds.backendMock', []); 

    } else if (document.URL.match(/\?nobackend$/)) { 

     // if the query string is present add a module with a run definition to replace the back end. 
     angular.module('myMock', ['ngMockE2E']) 

      .run(function($httpBackend) { 

       // MOCK-RUNNER-CONFIGURATION-. 
       var DOMAIN = 'example.com', 
     $httpBackend.whenGET('http://'+DOMAIN+'/someexample') 
        .respond(
         //MOCK-ERROR-STATUS-CODE 
         //401 //500 //404 //uncomment integer to mock status code and comment out mock data. 
         //MOCK-DATA-RESPONSE 
         { 
          'id' : '1', 
          'name' : 'MOCK', 
          'description' : 'mocking', 

         } 
        ); //end mock. 


        // various passthroughs. these allow existing services to work, while some are mocked. 
        $httpBackend.whenGET('./some.html').passThrough(); 

        // dont mock everything else, specify pass through to avoid error. 
        $httpBackend.whenGET(/^\w+.*/).passThrough(); 
        $httpBackend.whenPOST(/^\w+.*/).passThrough(); 

       }); 

     } 

})(angular); 
相關問題