Javascript 试图在我的nodejs api中运行Jest/Supertest,但不断收到一个TypeError:“;app.address不是一个函数;
我正在尝试为我的nodejs api开始集成/单元测试,但无法通过supertest正确连接到app.js文件 下面的代码写在我的main.test.js文件中Javascript 试图在我的nodejs api中运行Jest/Supertest,但不断收到一个TypeError:“;app.address不是一个函数;,javascript,node.js,jestjs,supertest,Javascript,Node.js,Jestjs,Supertest,我正在尝试为我的nodejs api开始集成/单元测试,但无法通过supertest正确连接到app.js文件 下面的代码写在我的main.test.js文件中 const app = require('../app') const supertest = require('supertest'); const request = supertest(app) it('posts color', async () => { await request.post('/postCol
const app = require('../app')
const supertest = require('supertest');
const request = supertest(app)
it('posts color', async () => {
await request.post('/postColor')
.send({
"Color": "Green",
}).expect(201)
})
下面是我的app.js文件
import express from 'express';
const app = express();
export default app;
我将index.js文件拆分为app.js和index.js文件
My index.js从app.js导入应用程序,并将其设置为侦听我需要的任何端口。
My main.test.js文件从app.js导入app,并根据supertest使用它,如上所示
我一直得到以下错误
TypeError:app.address不是函数
4 |
5 | it('posts color', async () => {
> 6 | await request.post('/postColor')
| ^
我通过在main.test.js文件中添加以下内容解决了此问题:
const app = require('../app').default
您混合了导出和require,可能需要
require('../app')。默认值为
。但是通过调试找出当前测试中的app
会有所帮助。这很有帮助,但它让我回到了上一个问题,即我的api端点返回的是404而不是201。我觉得整个结构缺少了一些东西@jonrsharpeWell这是您对服务器的期望和实际实现之间的一个独立问题。你现在必须给出一个答案,因为你的示例应用程序没有任何端点,所以它总是404。让我知道你的想法。