【发布时间】:2020-04-17 00:25:20
【问题描述】:
我是 Jest 和 TDD 的新手。请帮我! 我正在使用 supertest 来请求 API,但即使服务器关闭,测试也永远不会失败。我试过使用 return 或 async await 并没有解决
我在 Node.js 项目中有以下结构:
nodemodules
src
controllers
users-controller.js
index.js
routes.js
server.js
test
user.test.js
package.json
package.json:
"scripts": {
"test": "jest",
"lint": "eslint src/** test/** --fix",
"start": "node src/server.js",
"jest-watch": "jest --watch"
},
"devDependencies": {
"eslint": "^6.8.0",
"jest": "^25.3.0",
"supertest": "^4.0.2"
},
"dependencies": {
"body-parser": "^1.19.0",
"express": "^4.17.1"
}
src/server.js:
const app = require('./index')
app.listen(3001, () => {
console.log('Server running on port 3001')
})
src/index.js:
const express = require('express')
const routes = require('./routes')
const app = express()
app.use(express.json())
app.use(routes)
module.exports = app
src/routes.js
const routes = require('express').Router()
const UserController = require('./controllers/users-controller')
routes.get('/', (req, res) => { res.status(200).send() })
routes.get('/users', UserController.findAll)
routes.post('/users', UserController.create)
module.exports = routes
src/controllers/user-controller.js
module.exports = {
findAll(req, res) {
const users = [
{ name: 'John Doe', mail: 'john@mail.com' }
]
return res.status(200).json(users)
},
create(req, res) {
return res.status(201).json(req.body)
}
}}
测试/user.test.js:
const request = require('supertest')
const app = require('../src/index')
test('Should list users', () => {
return request(app).get('/users')
.then(res => {
expect(res.status).toBe(200)
expect(res.body).toHaveLength(1)
expect(res.body[0]).toHaveProperty('name', 'John Doe')
})
})
test('Should insert a user', async () => {
await request(app).post('/users')
.send({ name: 'Walter Mitty', email: 'walter@mail.com' })
.then(res => {
expect(res.status).toBe(201)
expect(res.body.name).toBe('Walter Mitty')
})
})
结果总是一样的:
PASS test / user.test.js
✓ Should list users. (16ms)
✓ Should insert a user. (13ms)
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 0.456s, estimated 1s
Ran all test suites related to changed files.
Watch Usage: Press w to show more.
【问题讨论】:
-
您好!哪些测试会失败,为什么会失败?
-
你好,andresmunozit!他们全部。服务器(Express)已关闭!
标签: node.js express jestjs tdd supertest