Angenommen, x
ist eine externe Bibliothek und Thing
ist ein Objekt, das aus x
konstruiert werden kann. Dies alles wird in einem Winkel Service gewickelt, etwa so:Verspotten/Ausspionieren eines Konstruktors "x.Thing()"
app.service('thingService', function() {
var thing;
this.createThing = function(thingParam){
thing = new x.Thing(thingParam);
}
});
Mein erster Versuch, diese enthalten:
xSpy = jasmine.createSpyObj('x', ['Thing']);
spyOn(window, 'x').andReturn('xSpy');
Aber es beschwert sich immer noch, dass x() method does not exist
auf dieser Linie, die Thing
konstruiert werden sollte
Aber dies scheint nicht die Verwendung von 'X' im Code zu lösen, die ('createThing' Methode des Dienstes) getestet werden. Wenn ich deinen Code zum Test hinzufüge, bekomme ich 'ReferenceError: Kann Variable nicht finden: x' wenn ich den Test durchführe –
Ich nahm an, du wolltest nur' Sache' ausspionieren. Wenn Sie das ganze 'x' ersetzen wollen, können Sie eine Ebene höher gehen und sich' x' merken und 'window.x' ersetzen (falls' x' wirklich global ist). Wenn 'x' kein Global ist, erläutern Sie bitte Ihr Beispiel. Der von Ihnen erwähnte Fehler weist darauf hin. –