如何使用jest和socket.io结束测试

时间:2018-07-14 09:25:19

标签: javascript socket.io jestjs

在我的项目中,我使用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块包装所有内容)
非常乏味,我想知道是否有一种讲笑话的方法
expect失败后继续运行。

0 个答案:

没有答案