2017-04-18 2 views
0

Einige meiner Tests in meinem Projekt React Native betreffen globale Objekte. Diese Änderungen wirken sich oft auf andere Tests aus, die auf denselben Objekten basieren.So behandeln Sie globale Objekte/Tests, die andere Tests in Jest beeinflussen

Zum Beispiel: Ein Test prüft die Zuhörer richtig hinzugefügt werden, ein zweiter Test prüft, ob Zuhörer richtig entfernt:

// __tests__/ExampleClass.js 
describe("ExampleClass",() => { 
    it("should add listeners",() => { 
     ExampleClass.addListener(jest.fn()); 
     ExampleClass.addListener(jest.fn()); 

     expect(ExampleClass.listeners.length).toBe(2); 
    }); 
    it("should remove listeners",() => { 
     const fn1 = jest.fn(); 
     const fn2 = jest.fn(); 
     ExampleClass.addListener(fn1); 
     ExampleClass.addListener(fn2); 

     expect(ExampleClass.listeners.length).toBe(2); 

     ExampleClass.removeListener(fn1); 

     expect(ExampleClass.listeners.length).toBe(1); 

     ExampleClass.removeListener(fn2); 

     expect(ExampleClass.listeners.length).toBe(0); 
    }); 
}); 

Der zweite Test selbst gut laufen wird, aber nicht, wenn alle Tests ausgeführt werden, weil der erste die ExampleClass nicht bereinigt hat. Muss ich solche Sachen in jedem Test immer manuell aufräumen?

Es scheint, ich verstehe nicht, wie der Bereich in Jest funktioniert ... Ich nahm an, jeder Test würde in einer neuen Umgebung ausgeführt werden. Gibt es Unterlagen dazu?

Andere Beispiele sind, externe Bibliotheken zu verspotten und zu überprüfen, ob die in ihnen gemunkelten Funktionen korrekt aufgerufen werden, oder Platform.OS zu IOS oder Android zu überschreiben, um plattformspezifische Implementierungen zu testen.

Antwort

0

Soweit ich sehen kann, ist der Umfang eines Tests immer die Testdatei. Für den Moment habe ich meinen Code geändert, um einen beforeEach Callback zu haben, der hauptsächlich jest.resetAllMocks() aufruft und Platform.OS auf seinen Standardwert zurücksetzt.

Schnell und Sandkasten

Jest parallelisiert Testläufe über Arbeiter Leistung zu maximieren. Konsolenmeldungen werden gepuffert und zusammen mit Testergebnissen gedruckt. Sandboxed-Testdateien und automatischer globaler Status werden für jeden Test zurückgesetzt, sodass keine zwei Tests miteinander in Konflikt stehen.

https://facebook.github.io/jest/

Verwandte Themen