之前将 mocha 共享行为与异步一起使用

Using mocha Shared Behaviours with async before

上下文:给定 https://github.com/mochajs/mocha/wiki/Shared-Behaviours 我希望能够重用之前使用异步的测试块。例如:

describe('test', () => {
  let beforeStuff
  before('something', async () => {
    return new Promise((resolve, reject) => {
      let wait = setTimeout(() => {
        clearTimeout(wait)
        beforeStuff = 'something_else'
        resolve('There is something')
      }, 200)
    })
  })

  reusableIts(beforeStuff)
})

function reusableIts(varValue) {
  it('testBlock', () => {console.log(`Value of var is $varValue`)})
}

问题:有什么方法可以使共享行为接受参数并异步工作,就像上面示例产生的那样

Value of var is undefined

注意:我假设将承诺分配给 var 并在 before 之后解决它,在 [=19] 等待它=]可重用(同时使其异步)将是一个选项,但这真的很混乱,我更喜欢别的东西,当然,如果还有别的东西的话。

我稍后找到了答案,这里有很好的记录:

基本上你需要一个上下文对象:

describe('test', () => {
  let context = {
      beforeStuff: undefined
  }
  before('something', async () => {
    return new Promise((resolve, reject) => {
      let wait = setTimeout(() => {
        clearTimeout(wait)
        context.beforeStuff = 'something_else'
        resolve('There is something')
      }, 200)
    })
  })

  reusableIts(context)
})

function reusableIts(context) {
  it('testBlock', () => {console.log(`Value of var is ${context.beforeStuff}`)})
}