将 async/await 更改为 Promise
Change async/await to Promise
我想更改以下async/await代码
const mongoose = require('mongoose')
const supertest = require('supertest')
const app = require('../app')
const api = supertest(app)
test("total number of blogs", async () => {
const response = await api.get('/api/blogs')
expect(response.body).toHaveLength(1)
})
afterAll(() => {
mongoose.connection.close()
})
像这样的承诺:
const mongoose = require('mongoose')
const supertest = require('supertest')
const app = require('../app')
const api = supertest(app)
test("total number of blogs", () => {
api.get('/api/blogs')
.then( response => {
expect(response.body).toHaveLength(1)
})
})
afterAll(() => {
mongoose.connection.close()
})
我无法正确解决它,并且不断收到错误消息:
在第一个版本中,您 return 测试了一个 Promise。测试库收到此承诺并等待它完成,然后再将测试视为“完成”。
所以你要做的是:
test("total number of blogs", () => {
return api.get('/api/blogs')
.then( response => {
expect(response.body).toHaveLength(1)
})
})
不要忘记第一个示例已经可以使用 promises(async/await 只是 promises)
编辑是因为我查看了文档 :p
为了澄清@jonrsharpe 的评论,您应该return 测试函数中的承诺:
test("total number of blogs", () => {
return api.get('/api/blogs')
.then( response => {
expect(response.body).toHaveLength(1)
})
})
我想更改以下async/await代码
const mongoose = require('mongoose')
const supertest = require('supertest')
const app = require('../app')
const api = supertest(app)
test("total number of blogs", async () => {
const response = await api.get('/api/blogs')
expect(response.body).toHaveLength(1)
})
afterAll(() => {
mongoose.connection.close()
})
像这样的承诺:
const mongoose = require('mongoose')
const supertest = require('supertest')
const app = require('../app')
const api = supertest(app)
test("total number of blogs", () => {
api.get('/api/blogs')
.then( response => {
expect(response.body).toHaveLength(1)
})
})
afterAll(() => {
mongoose.connection.close()
})
我无法正确解决它,并且不断收到错误消息:
在第一个版本中,您 return 测试了一个 Promise。测试库收到此承诺并等待它完成,然后再将测试视为“完成”。
所以你要做的是:
test("total number of blogs", () => {
return api.get('/api/blogs')
.then( response => {
expect(response.body).toHaveLength(1)
})
})
不要忘记第一个示例已经可以使用 promises(async/await 只是 promises)
编辑是因为我查看了文档 :p
为了澄清@jonrsharpe 的评论,您应该return 测试函数中的承诺:
test("total number of blogs", () => {
return api.get('/api/blogs')
.then( response => {
expect(response.body).toHaveLength(1)
})
})