我正在使用Mocha / Chai开发量角器测试套件(是的,在Jasmine中我遇到了同样的问题)。

因为该应用程序相当复杂,所以我希望能够干脆地建立测试套件,以使我能够将操作链接在一起形成函数。 (即,“登录,然后浏览到[parameterX],然后浏览至[parameterY],然后期望第一个帖子标题为[parameterZ])。

但是,当我将Mocha放入.then()语句中时,似乎无法让它们运行测试。

这是一个小代码段,显示了我的意思。

var chai = require('chai');
var cAP = require('chai-as-promised')
chai.use(cAP);
const expect = chai.expect;

const doTest = (x) => {
  describe('main', function() {
    it('should return foo', function(done) {
      expect(x).to.equal('foo')
    })
  })
}

const wait = () => new Promise((resolve, reject) => {
  setTimeout(() => resolve(), 10000)
})

wait()
  .then(() => doTest('foo'))

/* results in
 *   0 passing (4ms)
 */

最佳答案

describeit块可能无法异步完成。如果要在测试执行之前等待10秒,则应使用before块,该块支持异步执行。您的before回调采用一个arg,它是done回调。在此块内,您可以等待10秒,然后调用完成。所有后续块将等待,直到从done块内调用before为止。

describe('your tests', () => {
    before(done => {
        setTimeout(done, 10000)
    })
    it('should return foo', () => {
        expect(x).to.equal('foo')
    })
})

08-08 08:18
查看更多