mocha测试表达式4,监视一个在promise中调用的函数,测试无声地失败

时间:2014-08-12 21:14:31

标签: javascript node.js express promise mocha

我有一些看起来像这样的测试:

it('does stuff', function(done) {
  somePromise.then(function () {
    expect(someSpy).to.have.been.called
    done()
  })
})

如果该测试中的断言失败,它将无声地失败,并且测试本身将超时,因为永远不会到达done()。例如,这个:

it('does stuff', function(done) {
  expect(1).to.equal(2)

  somePromise.then(function () {
    expect(someSpy).to.have.been.called
    done()
  })
})

会失败,并且会有一个很好的错误,解释说我们期待1但得到2.但是,这个:

it('does stuff', function(done) {
  somePromise.then(function () {
    expect(1).to.equal(2)

    expect(someSpy).to.have.been.called
    done()
  })
})

将因超时而失败。我收集的问题是我不在“它”的背景下,但处理这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

失败的断言基本上都是抛出的错误。你可以像catch那样在承诺中发现任何错误。

it('does stuff', function(done) {
  somePromise.then(function () {
    expect(1).to.equal(2)

    expect(someSpy).to.have.been.called
    done()
  })
  .catch(done)
})