MochaJS:被拒绝的承诺不会触发失败的测试

时间:2018-11-20 18:50:02

标签: node.js async-await mocha supertest

我在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块,但没有成功。我显然在这里缺少有关力学的一些东西。

我的代码有什么问题?

编辑:从期望的回调函数中删除“异步”即可解决,尽管我不知道为什么在这里不会在回调中引发异常。

1 个答案:

答案 0 :(得分:0)

我认为您需要将res.body解析为JSON。