无论如何,Bluebird Promise都会得到解决

时间:2016-09-28 10:31:07

标签: promise mocha bluebird

我一定做错了,但这是我的测试用例:

const { describe, it } = require('mocha'),
  should = require('should'),
  Promise = require('bluebird') //v3.4.6
describe('Bluebird', () => {
  it('Promise is never resolved but does it get resolved?', () => {
    new Promise(() => false)
      .should.be.fulfilled() // It really shouldn't be
  })
})

传递,但不应该失败?

1 个答案:

答案 0 :(得分:1)

在mocha测试中使用promises时,测试中return the promise非常重要。

在你的情况下,那将是:

it('Promise is never resolved but does it get resolved?', () => {
   return new Promise(() => false)
    .should.be.fulfilled()
})

然而,这可能仍然不完全是您需要的,因为在调用should时无法确定承诺的履行情况。您的实际测试可能不同,最重要的部分仍然是返回承诺链。

当你这样做时,你就不需要进一步断言承诺的履行/拒绝,因为这是由mocha暗中完成的。

我个人是chai-as-promised的忠实粉丝,它允许您使用之前完全相同的测试,但这一次,它会起作用。