Ich schreibe gerade einen Integrationstest mit Mocha, Chai und WebdriverIO. Die WebdriverIO Syntax einer Kette von Versprechen erfordert über den Browser zu navigieren, ein Beispiel davon ist unten:Wie verkette ich Versprechen durch einen Rückruf in JavaScript?
it('sign in and out test', function() {
return client
.url(Page.url)
.pause(20000)
.waitForVisible(HomePage.signInDropdown, 10000)
.click(HomePage.signInDropdown)
}
Dies führt zu langen Codeblöcke mit jedem Schritt explizit angelegt. Da einige der Schritte (wie An- und Abmelden) häufig in verschiedenen Tests verwendet werden, möchte ich diese Codeschnipsel durch Rückrufe modularisieren. Allerdings ist die folgende Syntax, die ohne verschachtelten Rückruf funktioniert, schlägt fehl:
function myCallback(){
console.log('This is where I''d add promises');
}
it('sign in and out test',function() {
return client
.url(Page.url)
.pause(20000)
.then(function() {
myCallback();
}
.waitForVisible(HomePage.signInDropdown, 10000)
.click(HomePage.signInDropdown)
}
Die folgende andere Syntax in der Callback nicht auch:
function myCallback(){
return client
.url(Page.url)
console.log('This is a callback using return');
}
Da Versprechen meist Rückrufe ersetzen soll, wird Ist es in diesem speziellen Fall möglich, die Versprechenskette durch einen Rückruf fortzusetzen?
Bitte beschreiben "versagt". Gibt es irgendwelche Fehler auf der Konsole I (anders als nicht erreichbaren Code nach return-Anweisung)? Versionen von 'myCallback', die kein Versprechen (erste Syntax) zurückgeben, halten die Verarbeitung der Versprechenskette nicht aufrecht. Dokumentation sagt 'URL' gibt eine Zeichenkette zurück. Ist es falsch oder irreführend? – traktor53