GOOGLE ADS

Mittwoch, 13. April 2022

So beheben Sie die Funktion wurde bereits auf Fehler in Jasmine ausspioniert

Ich habe 3 Tests, die jeweils verschiedene Methoden testen.

it('test function1', function() {
spyOn(document, 'getElementById');
//... some code to test function1
expect(document.getElementById).toHaveBeenCalled();
});
it('test function2', function() {
spyOn(document, 'getElementById');
//... some code to test function2
expect(document.getElementById).toHaveBeenCalled();
});
it('test function3', function() {
spyOn(document, 'getElementById');
//... some code to test function3
expect(document.getElementById).toHaveBeenCalled();
});

Aber wenn ich diese Tests durchführe, erhalte ich die folgende Fehlermeldung: getElementById has already been spied upon. Kann jemand erklären, warum ich diesen Fehler erhalte, selbst wenn sich Spione in verschiedenen Testsuiten befinden, und wie man ihn behebt.


Lösung des Problems

Sobald Sie eine Methode einmal ausspioniert haben, können Sie sie nicht erneut ausspionieren. Wenn Sie nur überprüfen möchten, ob es in jedem Test angerufen wurde, erstellen Sie einfach den Spion zu Beginn des Tests und setzen Sie die Anrufe in zurück afterEach:

 spyOn(document, 'getElementById');
afterEach(() => {
document.getElementById.calls.reset();
});
it('test function1', function() {
//... some code to test function1
expect(document.getElementById).toHaveBeenCalled();
});
it('test function2', function() {
//... some code to test function2
expect(document.getElementById).toHaveBeenCalled();
});
it('test function3', function() {
//... some code to test function3
expect(document.getElementById).toHaveBeenCalled();
});

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...