Ich habe eine Suite, die mehrere Spezifikationen enthält. Jede Spezifikation verwendet Code für einige Bibliotheken, die bei einem Fehler eine abgelehnte Zusage zurückgeben.Wie man den Winkelmesser-Test von Spec auf bestimmten Zustand verlässt?
Ich kann leicht catch
diese abgelehnten Versprechen in meiner Spezifikation. Was ich mich wundere ist, dass, wenn ich Winkelmesser die ganze Suite innerhalb dieser catch
Funktion verlassen kann, weil die nächsten specs innerhalb der gleichen Suite vom Erfolg der vorherigen specs abhängig sind.
Pretend ich eine Suite haben testEverything
genannt, die diese Spezifikationen hat openApp
, signIn
, checkUser
, logout
. Wenn fehlschlägt, werden alle folgenden Spezifikationen aufgrund der Abhängigkeit fehlschlagen.
Betrachten Sie diesen Code für openApp
:
var myLib = require('./myLib.js');
describe('App', function() {
it('should get opened', function(done) {
myLib.openApp()
.then(function() {
console.log('Successfully opened app');
})
.catch(function(error) {
console.log('Failed opening app');
if (error.critical) {
// Prevent next specs from running or simply quit test
}
})
.finally(function() {
done();
});
});
});
Wie würde ich den ganzen Test beenden?
Es ist so traurig, dass es dazu kommen musste ... Ich denke, ich werde meine abhängigen Aufgaben einfach scheitern lassen, weil ich nicht so viel Code hinzufügen möchte. Ich habe genau das gleiche Problem und ich bin überrascht, dass es keinen einheimischen Weg gibt, dies zu tun. – Joffrey
@Joffrey Ich verstehe, wenn der Code für seinen Zweck zu lang ist. Dies sollte eine eingebaute Funktionalität von Protractor/Jasmine sein, da es nicht so kompliziert ist. Vielleicht sollten wir ein Problem in ihrem Github Repo hinzufügen? –