首页 > 解决方案 > Chai 测试返回 Uncaught TypeError: Cannot read property 'have' of undefined

问题描述

我正在尝试编写一个非常简单的 Chai 测试来检查服务器的状态。我创建了一个简单地返回 201 状态的端点。然后我创建了一个测试文件,检查从 HTTP 请求返回的状态是否为 201,但我得到了一个Uncaught TypeError: Cannot read property 'have' of undefined错误。(在测试文件夹上运行 npm test 后)谁能帮我找出我的文件中的问题?谢谢!

端点/status.js

module.exports = function (req, res) {
  res.status(201).send('You are doing a great job')
}

服务器.js

// Import dependancies
const express = require('express')
const cors = require('cors')

// Setup express server
const app = express()

// Setup port
app.set('port', (process.env.PORT || 3001))

// Parse application/json
app.use(express.json())

// Setup cors
app.use(cors())

// Import routes
const getStatus = require('./endpoints/status')
const getInfo = require('./endpoints/info')

// Setup routes
app.get('/api/status', getStatus)
app.get('/api/info', getInfo)

// Express only serves static assets in production
if (process.env.NODE_ENV === 'production') {
  app.use(express.static('client/build'))
}

// Listen on port
app.listen(app.get('port'), () => {
  console.log(`Find the server at: http://localhost:${app.get('port')}/`) // eslint-disable-line no-console
})

// Export so we can test
module.exports = app

测试/server.test.js

const chai = require('chai')
const chaiHttp = require('chai-http')
const server = require('../server')

chai.use(chaiHttp)

describe('status', () => {
  describe('GET /status', () => {
    it('it should return the correct status', (done) => {
      chai.request(server)
        .get('/api/status')
        .end((err, res) => {
          if (err !== null) {
            console.log('Status error: ', err)
          }
          res.should.have.status(201)
          done()
        })
    })
  })
})

标签: javascriptexpressmocha.jsbackendchai

解决方案


推荐阅读