我正在使用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)
*/
最佳答案
describe
和it
块可能无法异步完成。如果要在测试执行之前等待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')
})
})