2017-06-09 2 views
2

Ich frage mich, ob es ein besserer Weg, um disable Konsole Fehler istinnerhalb ein spezifischer Jest Test (dh Wiederherstellung die ursprünglichen Konsole vor/nach jedem Test).Jest: Bessere Weise Konsole im Gerät zu deaktivieren testet

Hier ist mein aktueller Ansatz:

describe("Some description",() => { 
    let consoleSpy; 

    beforeEach(() => { 
    if (typeof consoleSpy === "function") { 
     consoleSpy.mockRestore(); 
    } 
    }); 

    test("Some test that should not output errors to jest console",() => { 
    expect.assertions(2); 

    consoleSpy = jest.spyOn(console, "error").mockImplementation(); 

    // some function that uses console error 
    expect(someFunction).toBe("X"); 
    expect(consoleSpy).toHaveBeenCalled(); 
    }); 

    test("Test that has console available",() => { 
    // shows up during jest watch test, just as intended 
    console.error("test"); 
    }); 
}); 

Gibt es einen sauberen Weg, um die gleiche Sache zu vollbringen? Ich möchte spyOn vermeiden, aber mockRestore scheint nur damit zu arbeiten.

Danke!

Antwort

4

Da jede Testdatei in einem eigenen Thread ausgeführt wird, muss sie nicht wiederhergestellt werden, wenn Sie sie für alle Tests in einer Datei deaktivieren möchten. Aus dem gleichen Grund können Sie auch einfach schreiben

console.log = jest.fn() 
expect(console.log).toHaveBeenCalled(); 
+0

Vielen Dank für die Informationen zu diesem Thema. Es macht Sinn :) Ich war auf der Suche nach einer Möglichkeit, es nur in einem bestimmten Test so zu machen, ohne es wiederherstellen zu müssen (ich dachte zunächst, dass das das Verhalten standardmäßig war), aber ich denke bevorEs macht den Trick. – Apidcloud

Verwandte Themen