2016-05-07 12 views
2

vortäuschen So habe ich viele Beiträge gelesen, aber keine Vorschläge, wie bisher gearbeitet.Wie man ein Modul in eckigen

Ich möchte ein Modul spotten - sagen eckig-foo. Die Originaldatei wird zusammen mit allem anderen geladen.

angular.module('app', ['angular-foo'... 

Ich möchte dieses Modul in meinen Karma/Mokka-Tests verspotten. Ich habe Vorschläge ausprobiert, wie es so zu nennen, aber es ist ein Nein.

beforeEach(module('app')); 

beforeEach(module('angular-foo')) 

Wie kann ich völlig die ursprünglichen Winkel foo nicht ausgeführt werden (aber es muss im Rahmen des Restes des Codes laden)?

Antwort

4

factory, service und value Dienste verspotten kann angular.mock.module object argument

beforeEach(module('app', 'angular-foo', { 
    fooFactoryService: ..., 
    fooValueService: ... 
})); 

die Dienste zu verspotten verwendet werden, die

verwendet werden, während der Konfigurationsphase ( constant und provider), Config zur Injektion zur Verfügung stehen Funktion sollte
beforeEach(module('app', 'angular-foo', ($provide) => { 
    $provide.constant('fooConstantService', ...), 
    $provide.provider('fooProviderService', ...), 
})); 

Das letzte Modul in der Zeile überschreibt die Dienste von den anderen. Die Dienste können teilweise (mit $provide.decorator) oder komplett verspottet werden.

Wenn angular-foo Modul überhaupt nicht, aber andere Module nutzen sie geladen wird, kann es vollständig mit

angular.module('angular-foo', [])... 
beforeEach(module('app', 'angular-foo')); 
+1

Dank, dass Sie mich auf dem richtigen Weg bekam. 'angular.module ('Winkelstreifen']) Anbieter ('Streifen', {setPublishableKey: function() {}, $ get: function() {}}); beforeEach (Modul ('app')); ' – cyberwombat

0

in specs mit seiner verspottet Version neu definiert werden, was der Trick für mich tat, war Putting den Anbieter vor der Moduldeklaration:

beforeEach(module(function($provide) { 
    $provide.provider('myProvider', function() { 
     return { 
     myProviderFunction: function() {}, 

     $get: function() { 
      return { 
      myProviderFunction: function() {} 
      }; 
     } 
     }; 
    }); 
    })); 

    beforeEach(module('myApp')); 
Verwandte Themen