最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

摩卡和柴GET请求测试不起作用

IT培训 admin 7浏览 0评论

摩卡和柴GET请求测试不起作用

我正在尝试在主根'/'上测试GET请求。我的文件root.js中不存在该路由,因为我希望测试失败但总是成功。我不明白为什么。有3个文件:./ test / test.js,。/ server / server.js和./server/routes/index.js

/*File: ./test/test.js */
/* eslint-env mocha */
const chai = require('chai')
const chaiHttp = require('chai-http')

const { expect } = chai
const app = require('../server/server.js')

chai.use(chaiHttp)

describe('GET Home', () => {
  it('Should return Not found', () => {
    chai
      .request(app)
      .get('/', (err, res) => {
        const result = res.statusCode
        expect(result).to.equal(200)
      })
  })
})

/*File: ./server/server.js */
const express = require('express')
const bodyParser = require('body-parser')
const config = require('./config.js')
const mainRoutes = require('./routes')

const app = express()

app.set('view engine', 'jade')

app.use(bodyParser.urlencoded({ extended: false }))
app.use(mainRoutes)

app.listen(config.port, () => {
  console.log(`The application is running on localhost:${config.port}`)
})

module.exports = app

/*File: ./server/routes/index.js*/
const express = require('express')

const router = express.Router()

// router.get('/', (req, res) => {
//   res.render('home')
// })

module.exports = router
回答如下:

这是因为get运行async,你需要调用done()来断言expect(result).to.equal(200)以进行检查,否则你的测试将始终通过,无论你的路由器是否存在。如果你想了解更多信息,请查看此page并搜索Caveat

describe('GET Home', () => {
    it('Should return Not found', (done) => {
        chai
            .request(app)
            .get('/')
            .end(function (err, res) {
                const result = res.statusCode
                expect(result).to.equal(200)
                done()
            })
    })
})

摩卡和柴GET请求测试不起作用

我正在尝试在主根'/'上测试GET请求。我的文件root.js中不存在该路由,因为我希望测试失败但总是成功。我不明白为什么。有3个文件:./ test / test.js,。/ server / server.js和./server/routes/index.js

/*File: ./test/test.js */
/* eslint-env mocha */
const chai = require('chai')
const chaiHttp = require('chai-http')

const { expect } = chai
const app = require('../server/server.js')

chai.use(chaiHttp)

describe('GET Home', () => {
  it('Should return Not found', () => {
    chai
      .request(app)
      .get('/', (err, res) => {
        const result = res.statusCode
        expect(result).to.equal(200)
      })
  })
})

/*File: ./server/server.js */
const express = require('express')
const bodyParser = require('body-parser')
const config = require('./config.js')
const mainRoutes = require('./routes')

const app = express()

app.set('view engine', 'jade')

app.use(bodyParser.urlencoded({ extended: false }))
app.use(mainRoutes)

app.listen(config.port, () => {
  console.log(`The application is running on localhost:${config.port}`)
})

module.exports = app

/*File: ./server/routes/index.js*/
const express = require('express')

const router = express.Router()

// router.get('/', (req, res) => {
//   res.render('home')
// })

module.exports = router
回答如下:

这是因为get运行async,你需要调用done()来断言expect(result).to.equal(200)以进行检查,否则你的测试将始终通过,无论你的路由器是否存在。如果你想了解更多信息,请查看此page并搜索Caveat

describe('GET Home', () => {
    it('Should return Not found', (done) => {
        chai
            .request(app)
            .get('/')
            .end(function (err, res) {
                const result = res.statusCode
                expect(result).to.equal(200)
                done()
            })
    })
})

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论