【问题标题】:Jest - TypeError: app.address is not a function for router开玩笑 - TypeError: app.address 不是路由器的功能
【发布时间】:2020-12-21 03:13:33
【问题描述】:

我的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 测试以下发布请求。我尝试了以下...

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 不是函数

【问题讨论】:

    标签: javascript node.js async-await jestjs supertest


    【解决方案1】:

    我通过这样定义我的服务器解决了这个问题...

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 2018-09-25
      相关资源
      最近更新 更多