Я использую синтаксис async-await с Mocha и Supertest.Это мой проблемный тест:
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: Ошибка: ожидание(получено) .toBe (ожидается) // Object.is равенство
Я попытался поместить все это в блок try-catch, но безуспешно.Я явно что-то упускаю из-за механики.
Что не так с моим кодом?
РЕДАКТИРОВАТЬ: удаление «асинхронного» из функции обратного вызова ожидаемого, решает, хотя я нене знаю, почему исключение в обратном вызове не попадает сюда.