2017-09-07 1 views
0

Ich habe einen angularen Service, für den ich Komponententests schreibe, und eine der Methoden, die ich teste, verwendet Modulvariablen aus externen Abhängigkeiten, die ich verspreche und in ein BeforeEach vor dem Test injiziere es läuft. Diese Variablen sind entweder nur Standardarrays oder JSON und in der ursprünglichen Funktion werden sie basierend auf den Ausgaben von Dienstabhängigkeiten aufgerufen.Mocking-Servicemodul Variablenabhängigkeiten für Winkeleinheitstests

Ich habe die Methoden mit Jasmine createSpy und CallFake verspottet und ich habe versucht, die Werte dieser Variablen auf die gleiche Weise zu verspotten, aber sie kommen als undefiniert zurück und der Test schlägt daher fehl.

Was wäre der beste Ansatz, um die Werte dieser Variablen zu verspotten?

Die Variablen sind zum Beispiel wie folgt definiert:

var module = { 
    variableOne= [ a, b , c]; 
    variableTwo = {1, 2, 3}; 
}; 

und dann die Service-Methode, die ich Testen bin nennt sie durch zB:

DependentService.variableOne[outputOfMockedDependencyMethod]; 

Antwort

1

In Ihren Tests, wenn Sie den Dienst injizieren Sie können es dann ändern:

it(
    'your desc', 
    inject([YourService], (service: YourService) => { 
    service.mockedValue = {/* all you want */}; 
    })); 
+0

Ist dies in der inject für den Dienst, den ich testen oder für die abhängige y Dienstleistungen? Atm Ich habe eine separate inject für Abhängigkeiten in meinem beforeEach. Wenn es für den Service ist, den ich teste, ist es wichtig, dass die Variablen von den externen Abhängigkeiten kommen? – bardsleyta

+0

Nun, Sie haben um Hilfe bei der Prüfung Ihrer Serviceeinheit gebeten. Und wenn du es im Vorherigen tust, dann kannst du dasselbe tun, was ich hier zeige! Ich tendiere dazu, es direkt im Testfall zu tun, da ich normalerweise meine Dienste mit mehreren Mocks betrachte (um jedes mögliche Ergebnis zu testen) – trichetriche

+1

Ok. Vielen Dank. Ich habe es geschafft zu arbeiten :) – bardsleyta

Verwandte Themen