【问题标题】:Jest: Wait for an async test to finish before running the next one笑话:等待异步测试完成后再运行下一个测试
【发布时间】:2018-12-19 13:45:18
【问题描述】:

假设我有这些测试用例(jestsupertest):

describe('Test actors', async () => {
  const params = { /* ... */ }
  let actorId

  test(`Create an actor ${actorsUrl}`, async () => {
    const response = await request(app.callback())
      .post(actorsUrl)
      .send(params)
      .set('Accept', 'application/json')
      .set('Content-Type', 'application/json')
      .expect(200)
    expect(response.body.name).toBe(params.name)
    expect(response.body.address).toBe(params.address)
    actorId = response.body.id
  })

  test(`Get the actor created ${actorsUrl}/${actorsUrl}`, async () => {
    const response = await request(app.callback())
      .get(`${actorsUrl}/${actorsUrl}`)
      .set('Accept', 'application/json')
      .expect(200)
    expect(response.body.name).toBe(params.name)
    expect(response.body.address).toBe(params.address)
  })
})

我想在运行第二个测试之前等待第一个测试完成(因为第一个测试创建一个Actor,第二个测试向 API 询问创建的Actor)。运行此代码失败,因为尚未创建演员。

有没有办法在调用第二个测试之前等待第一个测试完成?

【问题讨论】:

    标签: javascript node.js unit-testing jestjs supertest


    【解决方案1】:

    只是 的包装,在许多情况下它依赖于jasmine 的规则。

    因此,您可以使用传递给test 函数的the same done callback

    test(`Create an actor ${actorsUrl}`, async (done) => {
        const response = await request(app.callback())
          .post(actorsUrl)
          .send(params)
          .set('Accept', 'application/json')
          .set('Content-Type', 'application/json')
          .expect(200)
        expect(response.body.name).toBe(params.name)
        expect(response.body.address).toBe(params.address)
        actorId = response.body.id
        done();
    })
    test(`Get the actor created ${actorsUrl}/${actorsUrl}`, async (done) => {
        const response = await request(app.callback())
          .get(`${actorsUrl}/${actorsUrl}`)
          .set('Accept', 'application/json')
          .expect(200)
        expect(response.body.name).toBe(params.name)
        expect(response.body.address).toBe(params.address)
        done();
    })
    

    您可以在 jest 的 async documentation 中阅读更多相关信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 2023-03-25
      • 2022-08-19
      • 2013-06-27
      • 2019-06-30
      • 1970-01-01
      相关资源
      最近更新 更多