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

时间:2018-03-16 22:08:22

标签: javascript async-await mocha

我需要在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中的异步但保留测试套装的结构以提高可读性?

1 个答案:

答案 0 :(得分:0)

您可以尝试通过将--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();
})();