0
我在我的應用程序的幾個集成測試:正確地調用摩卡做回調,並承諾
it('creating vehicle', function (done) {
createVehicle()
.then(() => {
done();
})
.catch((err) => {
done(err);
});
});
createVehicle
使POST請求,並返回承諾:
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;
});
現在一切工作正常,但如果我重寫第一段代碼如下:
it('creating vehicle', function (done) {
createVehicle()
.then(done) //*
.catch(done); //*
});
我從摩卡得到錯誤
()完成非錯誤
我明白爲什麼調用。該createVehicle
回報res.body
和它傳遞給then
回調,在結果done
運行方式done(arg)
和我得到的錯誤,因爲摩卡done
回調有沒有ARG被調用時,有沒有錯誤並論證時有錯誤。
是否有可能使用此變體:
.then(done)
.catch(done);
如何實現這一目標?
當然,我可以刪除return語句,但createVehicle
在多處使用,我需要返回值:
it('creating vehicle with media', function (done) {
createVehicle()
.then(createMedia) //createMedia will get returned value
//....
});
哇,謝謝,我跳過了這一點。 – user348173