问题描述
我正在尝试为使用 postresql 的 heroku 应用程序编写测试,但看起来我的测试函数无法连接到数据库。端点本身工作正常,当我在浏览器上测试它时,我会收到来自服务器的响应。提前致谢!!
我的代码:
server.js
import express from 'express';
import bodyParser from 'body-parser';
import cors from 'cors';
import mountRouter from './routes/index.js';
const port = 7000;
const app = express();
app.use(express.json());
app.use(bodyParser.urlencoded({ extended: true}));
app.use(cors());
mountRouter(app);
app.get('/',(req,res) => {
res.send("Welcome. The connection has been established.");
});
app.get('/test',res) => {
res.send("Test passed.");
});
app.listen(process.env.PORT || port,() => {
console.log(`Server listening`)
})
export default app;
index.js
import patientsRouter from './patients.js';
import staffMembersRouter from './staffMembers.js';
import hospitalWardsRouter from './hospitalWards.js';
import authenticationRouter from './authentication.js';
const mountRouter = app => {
app.use('/patients',patientsRouter)
app.use('/staff',staffMembersRouter)
app.use('/wards',hospitalWardsRouter)
app.use('/authentication',authenticationRouter)
}
export default mountRouter;
hospitalWardsController.js
import pool from '../db/db.js';
import sqlTemplate from 'sql-template-strings';
const { sql } = sqlTemplate;
class HospitalWardsController {
getAllHospitalWards = async (req,res) => {
try {
const allHospitalWards = await pool.query(sql`
SELECT * FROM hospital_ward;
`);
res.status(200).json(allHospitalWards.rows);
} catch (err) {
console.log(err.message);
}
}
getFreebedsCount = async (req,res) => {
try {
const { hospital_ward } = req.body;
const freebedsCount = await pool.query(sql`
SELECT hospital.name AS hospital_name,hospital.location AS hospital_location,hospital_ward.name AS hospital_ward_name,(bed_quantity - bed_reserved) AS beds_free
FROM hospital_ward
INNER JOIN hospital
ON hospital_ward.hospital_id = hospital.id
WHERE hospital_ward.name = ${hospital_ward}
ORDER BY beds_free DESC;
`);
res.status(200).json(freebedsCount.rows);
} catch (err) {
console.log(err.message);
}
}
}
const hospitalWardsController = new HospitalWardsController();
export default hospitalWardsController;
wards.test.js
import request from 'supertest';
import hospitalWardsController from '../routes/hospitalWards.js';
import app from '../server.js';
describe("hospitalWards.js TESTS",() => {
describe("hospitalWards.js GET('/') method TEST",() => {
test("should return all hospital wards",async () => {
app.listen();
const response = await request(hospitalWardsController).get("/").send({});
expect(response.statusCode).toBe(200);
});
});
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)