【发布时间】:2021-04-19 11:25:48
【问题描述】:
首先,我尝试了答案here - 没有帮助解决,接受的答案没有解决我的问题。
我正在尝试使用 Jest/Supertest 测试我的 API 端点。从一个简单的 /test 端点开始。但是,当我运行测试时,我得到:
TypeError: app.address is not a function.
app.js:
...
// Set server (default to 3000)
app.set('port', process.env.PORT || 3000);
// Start server
const server = http.listen(app.get('port'), () => {
logger.info(`Worker ${process.pid} running on ${app.get('port')} in ${app.get('env')} mode`);
});
module.exports = server;
...
app.test.js:
const server = require('./app');
const supertest = require('supertest');
const request = supertest(server);
it('Gets the test endpoint', async (done) => {
// Sends GET Request to /test endpoint
const res = await request.get('/test');
done();
});
测试运行输出:
FAIL ./app.test.js
✕ Gets the test endpoint (24 ms)
● Gets the test endpoint
TypeError: app.address is not a function
14 | it('Gets the test endpoint', async (done) => {
15 | // Sends GET Request to /test endpoint
> 16 | const res = await request.get('/test');
| ^
17 |
18 | // ...
19 | done();
欢迎任何意见,谢谢。
【问题讨论】:
-
Supertest 采用 app,而不是服务器。你不需要听,它会为你设置端口(这是好处之一 - stackoverflow.com/a/62992056/3001761)。我建议拆分应用程序和服务器部分,就像我在 github.com/textbook/starter-kit/tree/… 所做的那样。
-
太好了,感谢您的提示和示例代码。接受的答案
标签: node.js express jestjs supertest