如何在 mocha 测试的描述部分重构异步代码

How to refactor async code in describe section of mocha test

我需要在 mocha 中测试创建元素数组的异步操作的结果,这些元素必须符合部分中分组的某些规范以提高可读性:

describe("tested", async function(){        
    var resultOfOperation = await tested()
    for( var e of resultOfOperation ) {
       describe("feature set 1", function(){
           it("descriptionA", function() {
              assert(true)
           })
           it("descriptionB", function() {
              assert(true)
           })

       })
       describe("feature set 2", function(){
           it("descriptionC", function() {
              assert(true)
           })
       })
    }
})

上面的代码不起作用,因为 describe 不支持 async 函数,所以我需要以某种方式重构这个测试用例。我知道我可以在钩子中使用异步函数,但在这种情况下它没有帮助。

如何去掉 describe 中的 async 但保留测试服的结构以提高可读性?

您可以尝试通过将 --delay 标志传递给您的 mocha 实例来实现 delayed root suite 技术,这将为您提供特殊的 run 功能,您可以在套件运行时调用该功能准备开始,可以这样:

(async() => {
  var resultOfOperation = await tested();

  describe("tested", function() {
    for (var e of resultOfOperation) {
      describe("feature set 1", function() {
        it("descriptionA", function() {
          assert(true)
        })
        it("descriptionB", function() {
          assert(true)
        })

      })
      describe("feature set 2", function() {
        it("descriptionC", function() {
          assert(true)
        })
      })
    }
  });

  run();
})();