0

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

我只想检查一个返回 promise 的函数最终是否会返回一个 Array 并编写了以下 2 个测试:

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)
    })
  }
4

2 回答 2

1

你用什么测试库?摩卡,实习生还是其他?对于 Mocha 和 Intern,你必须从你的测试方法中返回 Promise:

it('should return an array', () => {
    return foo.bar().should.eventually.to.be.a('array');
})
于 2017-05-10T09:21:52.063 回答
0

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

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

看看这个让我进入异步单元测试的教程。

于 2017-05-10T09:08:45.883 回答