Я настраиваю некоторые тесты с Jest на экспресс-сервере Node.js, но я не могу понять, как тестировать вызовы, вложенные в блоки try / catch.
Вот часть моего сервера.js:
const start = async () => {
try {
if (process.env.NODE_ENV) {
await db.sync({ force: false });
}
...
app.get("/", (request, response) => {
response.send("Please feel free to use our api with /api");
});
...
app.listen(port, () => {
console.log(`Server running on port ${port}`);
return app;
});
} catch (err) {
console.log(err.message);
}
};
export default new Promise ( async () => {
return await start();
});
Здесь я хотел бы проверить, что такое код состояния app.listen()
, но я все еще не очень хорошо знаком с тестированием.
Есть какие-нибудь предложения?
Вот тест, который я написал:
const request = require('supertest');
const app = require('../server');
describe('Test the root path', ()=>{
test("GET method returns status code 200", ()=>{
request(app).get('/').then( response =>{
expect(response.statusCode).toBe(200);
});
});
})
Я предполагаю, что app
не то, что я ожидал, потому что Jest говорит мне, что app.address
не является функцией, поэтому мой export default new Promise
не являетсяправильное решение.
Извините, если это кажется грязным, надеюсь, вы можете помочь!