使用superagent +的Mocha测试承诺超时,而不是因“期望”而失败

克雷格·奥蒂斯(Craig Otis)

我正在mocha针对外部Web服务运行许多集成测试。superagent-promise用于请求/响应处理,并且正在expect用作我的断言库。

对于其中的一些测试,我需要将大量请求链接在一起,因此,promise非常有用。但是,我注意到我的测试现在失败,原因是超时(并且没有错误消息),而不是错误消息本身。作为一个简单的例子:

  it('[MESSAGES-1] cannot be posted without an auth token', function(done) {
    agent.post(config.webRoot + '/rooms/ABC/messages').send({
      content: 'This is a test!'
    }).end().then(function(res) {
      // Not expected
    }, function(err) {
      expect(err.status).toBe(401)
      done()
    })
  })

可以正常工作并通过:

  Messages
    ✓ [MESSAGES-1] cannot be posted without an auth token

但是,如果我更改断言以期望使用不同的状态代码:

expect(err.status).toBe(200) // This should fail

然后测试失败并超时!

  1) Messages [MESSAGES-1] cannot be posted without an auth token:
     Error: timeout of 1000ms exceeded. Ensure the done() callback is being called in this test.

这是个常见的问题吗?有什么解决方法或可以调整的地方吗?我不想失去使用诺言的能力。

Rabbitco

这是一个已知的问题?

这实际上不是问题。

问题是expect(err.status).toBe(200)抛出了一个错误,该错误被吞噬了.then并且导致代码永远无法到达done()您应该将代码重组为以下内容:

it('[MESSAGES-1] cannot be posted without an auth token', function(done) {
    agent.post(config.webRoot + '/rooms/ABC/messages').send({
      content: 'This is a test!'
    }).end()

    .then(function(res) {
      // Not expected
    }, function(err) {
      expect(err.status).toBe(401)
      done()
    })
    .catch(function(err) {
        done(err); //report error thrown in .then
    })
  })

这样,您就可以捕获并报告引发的错误expect(err.status).toBe(200)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用SailsJS和Superagent运行Mocha测试

来自分类Dev

使用Mocha / Chai测试异步功能时,未能符合期望总是会导致超时

来自分类Dev

使用Mocha / Chai测试异步功能时,未能符合期望总是会导致超时

来自分类Dev

使用superagent管道可读流

来自分类Dev

使用superagent管道可读流

来自分类Dev

使用具有A +规格的Superagent?

来自分类Dev

React - 使用 Superagent 等待请求结束

来自分类Dev

使用Babel和Webpack的Mocha测试失败

来自分类Dev

使用Mocha测试NightmareJS代码失败

来自分类Dev

使用异步Ajax调用的Sinon / Mocha测试未返回承诺

来自分类Dev

使用setInterval测试功能时,Mocha和Chai测试失败

来自分类Dev

如何从Mocha / Superagent测试CORS上传到Amazon-S3的电话?

来自分类Dev

使用superagent和React从API响应中获取setState

来自分类Dev

如何使用Superagent查找请求的文本以进行调试?

来自分类Dev

使用Superagent通过Ajax提交包含图像值的表单

来自分类Dev

使用Superagent和Express 4接收POST请求数据

来自分类Dev

如何使用Node.js ExpressJS或Superagent调用Freebase API

来自分类Dev

Mocha / Nightmare测试失败,但仍在等待超时

来自分类Dev

Vue-Superagent.post 不是一个函数

来自分类Dev

使用Mocha进行快速测试:基于承诺的测试将不会自行运行?

来自分类Dev

使用Mocha进行快速测试:基于承诺的测试将不会自行运行?

来自分类Dev

使用Mocha在Karma中进行深度差异测试失败

来自分类Dev

单元测试多个异步调用,这些调用使用Mocha返回承诺

来自分类Dev

单元测试多个异步调用,这些调用使用Mocha返回承诺

来自分类Dev

使用 mocha 和 chai 进行承诺解析后如何测试类的属性

来自分类Dev

如何在使用 sinon 的 mocha 单元测试中正确地排除请求承诺?

来自分类Dev

如何在 Node 中使用 Mocha 和 Chai 测试承诺拒绝?

来自分类Dev

Java程序因某些测试用例超时而失败

来自分类Dev

使用sinon和mocha在ember组件中测试ajax行为时出现超时错误

Related 相关文章

  1. 1

    使用SailsJS和Superagent运行Mocha测试

  2. 2

    使用Mocha / Chai测试异步功能时,未能符合期望总是会导致超时

  3. 3

    使用Mocha / Chai测试异步功能时,未能符合期望总是会导致超时

  4. 4

    使用superagent管道可读流

  5. 5

    使用superagent管道可读流

  6. 6

    使用具有A +规格的Superagent?

  7. 7

    React - 使用 Superagent 等待请求结束

  8. 8

    使用Babel和Webpack的Mocha测试失败

  9. 9

    使用Mocha测试NightmareJS代码失败

  10. 10

    使用异步Ajax调用的Sinon / Mocha测试未返回承诺

  11. 11

    使用setInterval测试功能时,Mocha和Chai测试失败

  12. 12

    如何从Mocha / Superagent测试CORS上传到Amazon-S3的电话?

  13. 13

    使用superagent和React从API响应中获取setState

  14. 14

    如何使用Superagent查找请求的文本以进行调试?

  15. 15

    使用Superagent通过Ajax提交包含图像值的表单

  16. 16

    使用Superagent和Express 4接收POST请求数据

  17. 17

    如何使用Node.js ExpressJS或Superagent调用Freebase API

  18. 18

    Mocha / Nightmare测试失败,但仍在等待超时

  19. 19

    Vue-Superagent.post 不是一个函数

  20. 20

    使用Mocha进行快速测试:基于承诺的测试将不会自行运行?

  21. 21

    使用Mocha进行快速测试:基于承诺的测试将不会自行运行?

  22. 22

    使用Mocha在Karma中进行深度差异测试失败

  23. 23

    单元测试多个异步调用,这些调用使用Mocha返回承诺

  24. 24

    单元测试多个异步调用,这些调用使用Mocha返回承诺

  25. 25

    使用 mocha 和 chai 进行承诺解析后如何测试类的属性

  26. 26

    如何在使用 sinon 的 mocha 单元测试中正确地排除请求承诺?

  27. 27

    如何在 Node 中使用 Mocha 和 Chai 测试承诺拒绝?

  28. 28

    Java程序因某些测试用例超时而失败

  29. 29

    使用sinon和mocha在ember组件中测试ajax行为时出现超时错误

热门标签

归档