我在Mocha和Supertest中使用async-await语法。这是我有问题的测试:
it('Test POST/friends route: should add a friendship', async function () {
const lastFriendship = await models.Friendship.findAll({limit: 1,where: {},order: [ [ 'createdAt', 'DESC' ]]})
const lastFriendId = lastFriendship[0].id
await request(app)
.post('/friends')
.set('Authorization', token)
.send({ friendId: 998 })
.expect(200)
.expect(async (res) => {
console.log('res.data', res.body.data.id)
const newFriendId = res.body.data.id
expect(res.body.data.friendId).toEqual(998)
expect(res.body).toHaveProperty('error', null);
expect(newFriendId - lastFriendId).toBe(2)//This should fail the test.
})
})
现在写的最后一个断言应该无法通过测试,但是我却收到此错误:
UnhandledPromiseRejectionWarning:错误: Expect(received).toBe(expected)// Object.is相等
我尝试将整个内容放入try-catch块,但没有成功。我显然在这里缺少有关力学的一些东西。
我的代码有什么问题?
编辑:从期望的回调函数中删除“异步”即可解决,尽管我不知道为什么在这里不会在回调中引发异常。
答案 0 :(得分:0)
我认为您需要将res.body解析为JSON。