TypeError:app.address不是函数,即使我正在导出我的服务器

时间:2018-03-01 15:00:35

标签: node.js express supertest

我在尝试在我的快速路线上运行单元测试时得到了标题中显示的TypeError我发现了其他3个问题,但这些问题的解决方案并没有解决我的问题。我需要一些其他可能的解决方案。

错误

? Compliance requests > /v1/healthcheck

    TypeError: app.address is not a function

      at Test.Object.<anonymous>.Test.serverAddress (node_modules/supertest/lib/test.js:55:18)
      at new Test (node_modules/supertest/lib/test.js:36:12)
      at Object.obj.(anonymous function) [as get] (node_modules/supertest/index.js:25:14)
      at Object.it (__tests__/routes/healthcheck.js:7:9)
          at new Promise (<anonymous>)
      at Promise.resolve.then.el (node_modules/p-map/index.js:46:16)
          at <anonymous>
      at process._tickCallback (internal/process/next_tick.js:160:7)

  Compliance requests
    x /v1/healthcheck (3ms)

App.js

// this is the app.js I am using for my test routes

const express = require('express')
const app = express()

const translation = require('../routes/translation')
const healthcheck = require('../routes/healthcheck')

// routes
app.use(translation)
app.use(healthcheck)

const port = process.env.PORT || 3100 // set our port
let server = app.listen(port, () => {
    var host = server.address().address;
    var port = server.address().port;
    console.log('CHATS is listening at http://%s:%s', host, port);
}); 

module.export = server

healthcheck.js(测试)

// This is my test

const request = require('supertest')
const app = require('../../__test-config/app')

describe('Compliance requests', () => {
    it('/v1/healthcheck', async () => {
        const res = await request(app)
        .get('/v1/healthcheck')
        .expect(200)

        expect(res.body).toContain('CHATS IS HEALTHY')
    })
})

healthcheck.js

// This is route I am testing
const express = require('express')
const router = express.Router()

const { currentVersion } = require('../constants')

router.get(`/${currentVersion}/healthcheck`, (req, res) => {
  res.end(`<html><body><h3>${process.env.HEALTHMESSAGE}</h3></body></html>`)
})

module.exports = router

1 个答案:

答案 0 :(得分:2)

小型 - 哦对不起 - 错字。 :d

module.exports代替module.export