2017-12-19 2 views
1

Ich habe einige Funktionstests, die mit Intern (3) ausgeführt werden und der letzte Schritt im Test ist, einige Aufräumarbeiten vorzunehmen, einschließlich Löschen von localStorage auf dem Remote-Browser und Zurückschalten auf das ursprüngliche Fenster durch sofortiges Speichern des Fensterhandle Zurückschalten darauf, bevor die Tests enden (so dass alle nachfolgenden Tests nicht fehlschlagen, weil sie versuchen, auf einem geschlossenen Fenster zu laufen, wenn der vorherige Test auf einem anderen endete). Wenn jedoch einige chaijs-Zusicherungen in einem .then() fehlschlagen, wird der Bereinigungscode am Ende übersprungen. Gibt es einen besseren Weg, um funktionale Tests zu bereinigen, die auch dann ausgeführt werden, wenn einige Assertionen fehlschlagen?Wie bereinigen Sie nach fehlgeschlagenen Intern Funktionstests?

this.leadfoot.remote 
    .get(require.toUrl(url)) 
    .execute(function() { return document.querySelector('#welcome').textContent}) 
    .then(welcome => { 
     assert.equal(welcome, 'hello world', 'properly greeted'); 
    }) 
    .execute(function() { 
     localStorage.clear(); 
    }); 

Wenn die Behauptung nicht, es wird nie klar local am Ende, und wenn der nächste Test, die localstorage läuft erwartet leer sein wird es scheitern. Gibt es einen besseren Weg, nach einem Funktionstest aufzuräumen?

Antwort

3

Verwenden Sie eine afterEach Methode.

afterEach() { 
    return this.remote 
     .execute(function() { 
      localStorage.clear(); 
     }); 
}, 

'my test'() { 
    return this.remote 
     .get(...) 
     .execute(...) 
     .then(welcome => { 
      assert.equal(welcome, ...); 
     }); 
} 
0

in unserem Projekt, das wir tun es wie folgt aus:

afterEach: function() { 
     var command = this.remote; 
     if(intern.variables.currentCase && !intern.variables.currentCase.hasPassed) { 
      command = command.execute(function() { 
       localStorage.clear(); 
      }); 
     } 
     return command; 
    }, 

und lokale Storage.clear() wird nur dann ausgeführt werden, wenn der Test nicht bestanden hat:

Verwandte Themen