2013-02-19 14 views
9

Naprawdę staram się znaleźć najprostszy sposób, aby moja aplikacja kątowa korzystała z fałszywej usługi backendu.

wszelkie wskaźniki byłyby świetne, przykładowa aplikacja, która pokazuje, jak napisać prostą aplikację, której użyłaby. tnx!

Odpowiedz

11

Oto przy użyciu $ httpBackend dla próbki z opracowaniem bez zaplecza jako przykładem odpowiedzi na this question.

Główne rzeczy dodane do plnkr aby uzyskać to do pracy to:

  1. Referenced plik w html angular-mocks.js.
  2. Dodany ngMockE2E w angular.module wymaga tablicę na linii 3 w app.js
  3. Injected $httpBackend do app.run i dodaje kod do powiedzenia mock backend czego się odpowiedzieć, gdy dostać się do określonego adresu URL jest wymagana .

Zostało to w większości wykonane z dokumentacji $httpBackend. Zauważ, że możesz wykonać numer .passThrough() dla wszystkich połączeń, w których chcesz trafić do backendu (pomijając próbę). Jest to szczególnie przydatne, jeśli części zaplecza już działają.

+0

„.passThrough()” będzie również przydatna do wczytywania szablonów inaczej «$ httpBackend» zakłóca zwykły mechanizm szablon ładowania. Na przykład dodaj, '$ httpBackend.whenGET (/ \. Html $ /). PassThrough();' –

2

Oto podstawowy szablon wyciągnął z różnymi przykładami:

'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); 
Powiązane problemy