Я пытался разрешить эти необработанные отклонения Обещания, которые я продолжаю получать в своем коде.
Текущий, который я получаю, выглядит следующим образом:
[nodemon] начиная с mocha --recursive -R min
(узел: 35286)
UnhandledPromiseRejectionWarning: AssertionError [ERR_ASSERTION]:
выражение оценивается как ложное значение:
подтвердить (count + 1 === newCount)
at Driver.count.then.newCount (/Users/danale/Projects/muber/test/controllers/drivers_controller.test.js:16:13)
at processTicksAndRejections (internal/process/next_tick.js:81:5) (node:35286) UnhandledPromiseRejectionWarning: Unhandled promise
отказ. Эта ошибка возникла из-за броска внутри асинхронного
функционировать без блока catch или отклоняя обещание, которое было
не обрабатывается с помощью .catch (). (идентификатор отклонения: 1) (узел: 35286) [DEP0018]
DeprecationWarning: Отклонения необработанных обещаний устарели. В
будущее, обещания отклонения, которые не обрабатываются, прекратят
Процесс Node.js с ненулевым кодом выхода.
Этот тест должен пройти:
const assert = require("assert");
const request = require("supertest");
const mongoose = require("mongoose");
const app = require("../../app");
const Driver = mongoose.model("driver");
describe("Drivers controller", () => {
it("Post to /api/drivers create a new driver", done => {
Driver.count().then(count => {
request(app)
.post("api/drivers")
.send({ email: "test@test.com" })
.end(() => {
Driver.count().then(newCount => {
assert(count + 1 === newCount);
done();
});
});
});
});
});
Чтобы справиться с отклонениями Обещания, которые я получил ранее, я сделал это:
const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const routes = require("./routes/routes");
const app = express();
mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost/muber", { useMongoClient: true });
app.use(bodyParser.json());
routes(app);
module.exports = app;
Контроллер, который я пытаюсь проверить:
const Driver = require("../models/driver");
module.exports = {
greeting(req, res) {
res.send({ hi: "there" });
},
create(req, res) {
console.log(req.body);
const driverProps = req.body;
Driver.create(driverProps).then(driver => res.send(driver));
}
};
Я пытался добавить catch()
к тесту так:
describe("Drivers controller", () => {
it("Post to /api/drivers create a new driver", done => {
Driver.count()
.then(count => {
request(app)
.post("api/drivers")
.send({ email: "test@test.com" })
.end((err, res) => {
Driver.count().then(newCount => {
assert(count + 1 === newCount);
done();
});
});
})
.catch(error => console.log(error));
});
});
но это не помогло устранить ошибку.
Это мой обработчик маршрута:
const DriversController = require("../controllers/drivers_controller");
module.exports = app => {
// Watch for incoming requests of method GET to the route http://localhost:3050/api
app.get("/api", DriversController.greeting);
app.post("/api/drivers", DriversController.create);
};