Я попытался настроить очень простой express тест API с помощью Mocha.
let chai = require("chai");
let chaiHttp = require("chai-http");
chai.use(chaiHttp);
describe("TicketBooking", function(){
describe ("CRUD OPERATIONS", function(){
var seats = [{
"seatID": 12,
"passenger": {
"name": "Mr. a Huffle Puff",
"sex": "M",
"age": 52,
"email": "karafasfaa@gmail.com"
}
}, {
"seatID": 19,
"passenger": {
"name": "Mr. a Huffle Puff",
"sex": "M",
"age": 52,
"email": "karafafasfssfaa@gmail.com"
}
}]
it("Should create seats in DB", (done) => {
for (var i=0; i<seats.length; i++) {
console.log(seats[i])
chai.request('http://localhost:5141')
.post("/create/")
.send(seats[i])
.end((err, res) => {
chai.expect(res).to.have.status(200);
console.log("Response Body:", res.body);
done();
})
}
})
})
})
Хотя мой сервер работает при вызове через почтальона, я не могу настроить для него тесты Mocha.
Мой express маршрутизатор для enpoint '/ create' настроен как:
//MODULE IMPORTS
const express = require('express')
//MODEL IMPORTS
const { Ticket } = require('../models/ticket')
const { Passenger } = require('../models/passenger');
//ROUTER OBJECT INIT
const router = express.Router();
//CREATE A TICKET {POST}
router.post('/create', async (req, res) => {
data = await req.body
try {
for(var i=0; i< data.length; i++) {
obj = data[i]
try {
//Check if seatID is valid
if (parseInt(obj.seatID) > 40) {
return res.status(400).send("Invalid SeatID. There are only 40 seats in the Bus!");
}
//Check if seat is already booked.
let exists = await Ticket.findOne({
isBooked: true,
seatID: obj.seatID
});
if (exists) {
return res.status(400).send("The seat you are looking for is already booked");
}
//Save Passenger to Atlas Cluster
const passenger = new Passenger(obj.passenger);
const passengerData = await passenger.save();
if (passengerData) {
//If passenger was saved, save a ticket entry, corresponding to the passenger
const ticket = new Ticket()
ticket.seatID = obj.seatID
ticket.isBooked = true
ticket.passengerObj = passenger._id;
const ticketData = await ticket.save();
if (ticketData) {
res.status(200).send(ticketData);
}
}
} catch (err) {
// console.log("ERROR:: ", err)
return res.status(403).send(err);
}
}
} catch (err) {
console.log("ERROR:: ", err)
return res.status(403).send(err);
}
});
Я получаю следующую ошибку: введите описание изображения здесь
Что-то не так с моей настройкой? Я пытался отладить это часами, но не могу понять. Кто-нибудь может мне помочь?