【问题标题】:Using mocha Shared Behaviours with async before在异步之前使用 mocha 共享行为
【发布时间】:2020-09-05 04:10:30
【问题描述】:

上下文:鉴于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`)})
}

问题:有什么方法可以让共享行为接受参数并像上面的例子那样异步工作

var 的值未定义

注意:我假设给 var 分配一个承诺,然后在 before 中解决它,在 reusable 中等待它(同时它是异步的)将是一个选项,但这真的很混乱,我更喜欢别的东西,当然,如果有别的东西的话。

【问题讨论】:

    标签: typescript mocha.js


    【解决方案1】:

    稍后我找到了答案,并且在这里记录得非常好:Setup variable in mocha suite before each test?

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

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

    【讨论】:

    • 谢谢,你让它变得更简单了。值得一提的是setTimeout 只是为了证明这个概念,任何Promise 都可以工作。诀窍是将所有内容保存在“上下文”中,而不是更改它的引用,简单而精彩。
    猜你喜欢
    • 2015-11-28
    • 2016-11-30
    • 2021-10-21
    • 2021-04-13
    • 2017-12-18
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多