使用或不使用通知方法调用chai-as-promised有什么区别?

时间:2017-05-10 08:52:51

标签: javascript node.js promise chai chai-as-promised

我使用chaichai-as-promised来测试一些异步JS代码。

我只是想检查一个返回promise的函数最终会返回一个数组并写下以下两个测试:

A

it('should return an array', () => {
    foo.bar().should.eventually.to.be.a('array')
})

it('should return an array', (done) => {
    foo.bar().should.eventually.to.be.a('array').notify(done)
})

两者都通过了OK,但只有 B 选项实际运行了我的bar()函数中包含的完整代码(即显示下面代码中的console.log()消息)。难道我做错了什么?为什么会这样?

bar() {
    return myPromise()
    .then((result) => {
      console.log('Doing stuff')
      return result.body.Data
    })
    .catch((e) => {
      console.err(e)
    })
  }

2 个答案:

答案 0 :(得分:1)

您使用什么测试库? Mocha,实习生还是其他人? 对于Mocha和Intern,您必须从测试方法中返回承诺:

it('should return an array', () => {
    return foo.bar().should.eventually.to.be.a('array');
})

答案 1 :(得分:0)

测试承诺意味着您正在测试异步代码。通知和完成回调设置计时器并等待承诺链完成执行。

第二种方法是正确的,因为您可能需要测试链式承诺。

看看这个让我进入异步单元测试的tutorial