Wenn ich Unit-Test meine Getter Setters für Typescript sind, kann ich keine Möglichkeit finden, diese Getter und Setter auszuspionieren. Stattdessen wird das Objekt sofort ausgewertet. Ich benutze Jasmin zum Komponententest.Wie spioniere ich Typoskript Getters und Setter?
8
A
Antwort
3
Es wird noch nicht unterstützt, aber es gibt ein Jasmine-Problem für supporting getters.
Wenn Sie wirklich die Unterstützung jetzt benötigen, können Sie SpyRegistry.js Datei erweitern und den Code hinzufügen, dass apsillers vorgeschlagen:
this.spyOnProperty = function(obj, methodName, accessType) {
...
var desc = Object.getPropertyDescriptor(obj, methodName);
if(desc[accessType]) { // "get" or "set" exists on the property
var spy = j$.createSpy(methodName, desc[accessType]);
desc[accessType] = spy;
Object.defineProperty(obj, methodName, desc);
}
}
in Jasmin
2
Ich kann keinen Weg finden, diese Getters und Setter auszuspionieren. Stattdessen wird das Objekt sofort ausgewertet.
Das wird von Jasmine nicht unterstützt. Ihre primären Optionen sind Refactor in Funktionsaufrufe ODER erweitern Sie Jasmin
6
spyOnProperty
ist jetzt verfügbar:
const foop = {
get value() {},
set value(v) {}
};
it('can spy on getter',() => {
spyOnProperty(foop, 'value', 'get').and.returnValue(1);
expect(foop.value).toBe(1);
});
it('and on setters',() => {
const spiez = spyOnProperty(foop, 'value', 'set');
foop.value = true;
expect(spiez).toHaveBeenCalled();
});
0
fand ich die Lösung hier hilfreich. Anstatt den Getter auszuspionieren, überschreiben Sie ihn einfach, um die Rückgabe zum Testen zu modifizieren.
Duplizieren von https://stackoverflow.com/questions/20879990 –