Мой веб-API, сервер. js использует mongodb в качестве своей базы данных и докеризируется в контейнере docker с использованием docker -compose.
Я использую chai / mocha для создания теста. js где test. js будет докеризован в контейнере и будет использоваться для проверки моего веб-API, где мой веб-API будет работать в localhost: 8080 (не уверен, что это правильный способ, я установил server=http://localhost:8080
). Мой тестовый контейнер будет открыт для порта 80.
После выполнения тестов mocha меня выдает необработанное отклонение обещания, исключение ECONNREFUSED, когда я не могу подключиться к порту 8080.
Что я делаю не так?
сервер. js:
const express = require("express");
const app = express();
const connectDb = require("./src/connection");
const Task = require("./src/Task.model");
const PORT = 8080;
app.use(express.urlencoded({ extended: false }));
app.get("/tasks", async (req, res) => {
const tasks = await Task.find();
res.json(tasks);
});
app.post("/task-create", async (req, res) => {
const task = new Task(
{
title: req.query.title,
description: req.query.description,
start: req.query.start,
end: req.query.end,
priority: req.query.priority,
category: req.query.category,
status: req.query.status
});
await task.save().then(() => console.log("Task created"));
res.send(task);
});
app.listen(PORT, function() {
console.log(`Listening on ${PORT}`);
connectDb().then(() => {
console.log("MongoDb connected");
});
});
тест. js
let chai = require("chai");
let chaiHttp = require("chai-http");
let server="http://localhost:8080"
chai.use(chaiHttp);
describe ("CRUD OPERATIONS", () => {
it ("Should add task in DB", (done) => {
chai.request(server)
.post("/task-create")
.send({
title: "Read a book",
description: "Quiet activity",
start: "2020/03/02",
end: "2020/03/06",
priority: "high",
category: "education",
status: false
})
.end((err, result) => {
result.should.have.status(200);
console.log("result is: " + result.body)
done()
})
})
it ("Should Fetch all the tasks", (done) => {
chai.request(server)
.get("/tasks")
.end((err, result) => {
if ("error is: " + err) {
console.log(err)
}
result.should.have.status(200);
console.log("result is: " + result.body)
done()
})
})
})