2016-09-13 4 views
0

Bitte beachten Sie mein Code-Beispiel unten, ich habe einen Winkelmesser Test, der als GULP-Aufgabe von Winkel-Winkelmesser laufen.

Ich möchte in der Lage sein, einige REST-Aufrufe für alle Blöcke verspotten, aber auch Zugriff auf die httpBackend für bestimmte It-Blöcke.

Ich habe Probleme, die gemeinsame Nutzung der httpBackend Variable $ um, obwohl:

  • ich this.VARIABLE_NAME nicht wegen des Umfangs verwenden kann ich in in der Run-Funktion bin.

Codebeispiel

describe('Train Station Search Component', function() { 

    beforeEach(function() { 
     //Mock any REST calls here. 
     browser.addMockModule('httpBackendMock', function() { 
     angular.module('httpBackendMock', ['MyApp', 'ngMockE2E']) 
       .run(function($httpBackend) { 
        //Mock call relevant to both it blocks. 
        $httpBackend.whenPOST(/^(.*\/api\/search)/).respond({...}); 
       }); 
     }); 
    ); 

    it('should check one piece of functionality', function() { 
     //Expect call with data relevant only for this it block. 
     $httpBackend.expectPOST(...); 
    }); 

    it('should check another piece of functionality', function() { 
     //Expect call with data relevant only for this it block. 
     $httpBackend.expectPOST(...); 
    }); 

}; 

Jede Hilfe sehr geschätzt.

Antwort

0

Sie können $ injector verwenden, um den $ httpBackEnd-Dienst zu injizieren.

var $httpBackend 
beforeEach(inject(function($injector) { 
// Set up the mock http service responses 
$httpBackend = $injector.get('$httpBackend'); 
}); 

über den Link gehen https://docs.angularjs.org/api/ngMock/service/$httpBackend

+0

Danke für zu verlassen. Ich habe kein Glück damit, ich habe ng-mock.js in der HTML-Seite, aber ich bekomme eine Fehlermeldung, die den Test ausführt, dass inject nicht definiert ist. Es ist ein Objekt im Browserfenster. Ich könnte dies mit executeScript bekommen, aber es scheint ein bisschen hack. –

Verwandte Themen