ich in meiner app mehrere Integrationstests haben:Richtig Mokka getan Rückruf anrufen und verspricht
it('creating vehicle', function (done) {
createVehicle()
.then(() => {
done();
})
.catch((err) => {
done(err);
});
});
createVehicle
macht Post-Anforderung und Renditen versprechen:
return request.json('post', '/api/vehicle/')
.send(obj)
.expect(200)
.then((res) => {
expect(res.body).toExist("Body is empty");
expect(res.body.id).toExist("Id is empty");
return res.body;
});
Jetzt alles funktioniert gut, aber wenn ich neu schreiben erster Schnipsel in folgenden Weise:
it('creating vehicle', function (done) {
createVehicle()
.then(done) //*
.catch(done); //*
});
ich bekomme Fehler von Mocha
done() aufgerufen mit nicht-Fehler
Ich verstehe, warum. Die createVehicle
zurückgeben res.body
und es ist an then
Rückruf, im Ergebnis done
ausgeführt als done(arg)
übergeben und ich bekomme den Fehler, weil Mocha done
Rückruf ohne arg aufgerufen werden muss, wenn kein Fehler und mit Argument, wenn es einen Fehler gibt.
Ist es möglich, diese Variante zu verwenden:
.then(done)
.catch(done);
Wie dies zu erreichen?
Natürlich kann ich return-Anweisung, löschen, aber createVehicle
wird an mehreren Stellen verwendet und ich brauche Rückgabewert:
it('creating vehicle with media', function (done) {
createVehicle()
.then(createMedia) //createMedia will get returned value
//....
});
Wow, danke, habe ich dies übersprungen. – user348173