Javascript Jest-TypeError:app.address不是路由器的函数

Javascript Jest-TypeError:app.address不是路由器的函数,javascript,node.js,async-await,jestjs,supertest,Javascript,Node.js,Async Await,Jestjs,Supertest,我的app.js如下所示 require('dotenv').config(); const koa = require('koa'); const router = require('./routes/src').default; const koaBody = require('koa-body'); const app = new koa(); app.use(koaBody({ multipart: true })); app.use(router()); app.listen(p

我的
app.js
如下所示

require('dotenv').config();
const koa = require('koa');
const router = require('./routes/src').default;
const koaBody = require('koa-body');

const app = new koa();
app.use(koaBody({ multipart: true }));

app.use(router());

app.listen(process.env.PORT);

module.exports = app;
我正在结合
routes/scr/index.js
中的路由

const combineRouters = require('koa-combine-routers');
const Router = require('koa-router');
const service = require('../../services/index').default;

const router = new Router({ prefix: '/api' });

router.post('/retrieve', service);

const routers = combineRouters(
  router
);

module.exports.default = routers;
现在我想使用
jest
测试以下post请求。我尝试了以下方法

const request = require('supertest');
const route = require('../src/index'); // routes/scr/index.js

test('Hello world works', async () => {
  const payload = {
    test: ''
  };
  try {
    const response = await request(route).post('/api/retrieve').send(payload);
  } catch (err) {
    console.log(err);
  }
});
出于某种原因,我得到了以下
supertest
错误

TypeError:app.address不是函数


我通过将我的服务器定义为

const supertest = require('supertest');
const http = require('http');
const app = require('../../app');

const request = supertest(http.createServer(app.callback()));
...