2016-10-18 4 views
1

Meine App speichert einige Informationen zur aktuellen Sitzung in localStorage. Daher brauche ich meine Tests, um vor oder nach jedem einzelnen Test in allen Testdateien localStorage zu löschen. Gibt es eine Möglichkeit, einen beforeEach oder afterEach Rückruf global statt auf jeder Testdatei zu definieren?Global beforeEach/afterEach für ember qunit-Tests

Antwort

2

Wir hatten ember-qunit module, moduleFor und moduleForComponent aus einem fast gleichen Grund gewickelt. Und wir importieren diese Wrapper anstelle von ember-qunit.

Ein anderer Vorschlag ist, localStorage mit einem Dienst zu verpacken. Greifen Sie niemals auf localStorage mit Ausnahme dieses Dienstes zu. Sie können also in Tests eine Scheinimplementierung verwenden.

Aktualisiert:

Wie es realisiert wird:

import { moduleFor, moduleForModel, test, only, setResolver } from 'ember-qunit'; 
import { moduleForComponent as qunitModuleForComponent } from 'ember-qunit'; 

function moduleForComponent(name, description, callbacks) { 
    //our implementation that wraps "qunitModuleForComponent" 
    //eg. init commonly used services vs. 
} 

export { 
    moduleFor, 
    moduleForComponent, 
    moduleForModel, 
    test, 
    only, 
    setResolver 
}; 

Vorteile:

  • Verhindert Code-Duplizierung
  • Zentralisieren Unit-Test-Management
  • Einfache neue Methoden hinzufügen für kundenspezifische Bedürfnisse, wie: moduleForValidatableComponent, moduleForLocalStorage

Nachteile:

  • ember-cli erzeugt testet diejenigen ember-qunit importieren. Entwickler müssen die Importanweisungen in diese Wrapper ändern. Es wurde manchmal vergessen. (Wenn ein Test fehlschlägt, erinnern sich Entwickler daran, dass sie Importanweisungen ändern müssen.)
  • Für einige Tests ist das Umwickeln nicht erforderlich.
+0

Danke für den Tipp über das Einpacken von localStorage mit einem Service. Aber ich ziehe immer noch vor, was Sie über das Umhüllen dieser Methoden von ember-qunit erwähnen, da diese Funktion außerhalb meines aktuellen spezifischen Bedarfs nützlich sein könnte. Könnten Sie näher erläutern, wie diese Verpackung funktioniert? – Ernesto

+0

@Ernesto aktualisiert – ykaragol