EDIT: Ich denke, ich verstehe, warum es nicht funktioniert. Ich kann Argumente nicht übergeben, wenn ich flow.execute (getSpendermeldung) aufruft. Jemand hat eine bessere Lösung als den ApiCall in eine andere Funktion zu verpacken und "globale" Variablen zu verwenden? Ich beabsichtige, dies in einer anderen Datei zu haben und zu verwenden, wenn nötig.Winkelmesser Versprechen FN ist keine Funktion
Original-Beitrag: Für meine Winkelmesser Tests möchte ich Testdaten aus einer Datenbank erhalten. Ich habe dies mit dem Nodejs http-Modul getan, das bisher funktioniert. Seit ich mit diesen Daten getestet habe, habe ich Probleme bei der Synchronisation gemacht. Ich habe sie mit Jasmin Callback Lösung umgangen. Allerdings finde ich das zu unflexibel und würde gerne Versprechungen und den Kontrollfluss nutzen. Leider erhalte ich bei der Ausführung meines Codes einen Fehler: fn ist keine Funktion. Irgendwo tief in der WebDriver/lib/promise.js
Dies ist meine Funktion:
function getSpendermeldung(kennnummer) {
var http = require('http');
var defer = protractor.promise.defer();
var options = {
host: 'localhost',
path: '/blabla/' + kennnummer
};
var callback = function (response) {
var body = '';
response.on('data',
function (chunk) {
body += chunk;
});
response.on('end',
function() {
spendermeldung = JSON.parse(body);
defer.fulfill('json parsed');
});
};
http.get(options, callback).end();
return defer.promise;
}
ich es mit diesem Aufruf:
var flow = browser.controlFlow();
flow.execute(getSpendermeldung('D0000001'));
Jemand hat eine Idee, was ich bin fehlt. Vielen Dank.
PS: Würde gerne den Stacktrace veröffentlichen, aber ich bekomme nicht die Formatierung richtig.
Ich habe ein beide versucht und immer in einem Ende Endlosschleife. Ich nehme an, das ist, weil get() im Gegensatz zu request() implizit end() aufruft. Die Rückgabe des Defenders scheint jedoch falsch zu sein. – Transzendental
In meinen Projekten komme ich immer wieder zurück. – nilesh