【问题标题】:Setting timeouts with supertest not working使用超测设置超时不起作用
【发布时间】:2014-05-13 20:33:50
【问题描述】:

我正在尝试使用如下代码测试我的服务器:

describe 'POST /do/some/stuff/', ->
  it 'should do this thing', (done) ->
    request app
      .post '/do/some/stuff/'
      .timeout 10000
      .expect 200
      .end (err, res) ->
        return done err if err?
        done()

服务器所做的事情通常需要几秒钟,这比默认的超时时间2000ms要长,所以我调用.timeout 10000。然而,尽管如此,当我运行代码时,我得到:

1) POST /do/some/stuff/ should do this thing:
   Error: timeout of 2000ms exceeded

我需要做些什么来增加这个超时时间?

【问题讨论】:

    标签: node.js mocha.js supertest


    【解决方案1】:

    更改 request 对象上的超时不会更改 Mocha 的默认超时。在您的测试中执行 this.timeout(10000)(无论 CoffeeScript 等价物是什么)应该会解决这个问题。

    【讨论】:

    • 对我不起作用,我需要等待 20 秒来等待查询调用,但它仍然会直接跳转到我的断言,然后才能返回。
    • @WeDoTDD 如果它对您不起作用,那是因为您的代码存在另一个问题。你应该问另一个问题。对实际上确实有效的答案投反对票等于对 Stack Overflow 造成伤害。
    【解决方案2】:

    您可以在运行测试框架时指定超时。例如,对于 mocha,它就像 mocha -t 7000 。或者,您可以使用 setTimeout 添加测试以创建延迟(如果所需的延迟在测试之间)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 2015-06-30
      • 2019-07-22
      • 2019-04-08
      相关资源
      最近更新 更多