首页 > 解决方案 > 如何用 jest 和 socket.io 结束测试

问题描述

在我的项目中,我jest用作测试运行器。
测试纯函数很容易,但我发现自己正在与' 期望
抛出的错误作斗争。jest

我想使用socket.io.

  test('async', (done) => {
    const s = createConnection(config.port)

    s.on(WORLD, () => {
        expect(true).toBe(true)
        done()
    })
    s.emit(HELLO)
  })

运行这个测试按预期工作,套接字客户端发送一条消息,
然后接收响应并期待一些东西done
问题是当期望失败时,因为jest将它作为错误抛出,
永远done不会被调用,我需要将它包装在try-catch块中:

  test('async', (done) => {
    const s = createConnection(config.port)

    s.on(WORLD, () => {
      try {
        expect(false).toBe(true)
        done()
      } catch (e) {
        done(e)
      }
    })
    s.emit(HELLO)
  })

这种编写测试的方式(用try-catch块包装所有东西)
非常乏味,我想知道是否有办法告诉 jest
在失败后继续运行expect

标签: javascriptsocket.iojestjs

解决方案


推荐阅读