如果 this.async 不可用,您如何在功能拆解中生成承诺?

How can you generate a promise in functional teardown if this.async isn't available?

在功能测试套件的拆解中调用 this.async() 有什么等价物?我在测试中使用 this.async() 来创建一个我稍后解决的承诺,并想将这段代码移到拆解中,但它似乎不可用。

文档表明测试套件在等待解决承诺时会暂停,但我不确定如何在拆解中生成可以调用 .resolve() 和 .reject 的承诺() 功能开启。

这是我在测试中使用的代码:

var dfd = test.async(10000);
var js = "var coverageData = {" +
  "name : name || ''," +
  "lines : $$_l.lines," +
  "runLines : $$_l.runLines," +
  "code : $$_l.code," +
  "allConditions : $$_l.allConditions," +
  "conditions : $$_l.conditions," +
  "allFunctions : $$_l.allFunctions," +
  "runFunctions : $$_l.runFunctions" +
  "};" +
  "return JSON.stringify(coverageData);";
browser.execute(js)
  .then(function(data) {
    console.log("Retrieved coverage data from browser...");
      try {
        var post_options = {
          host: "localhost",
          port: "8082",
          path: "/node-coverage-store",
          method: "POST",
          headers: {
            "Content-Type": "application/json;charset=UTF-8"
          }
        };
        console.log("Posting coverage data...");

        // Set up the request
        var post_req = http.request(post_options, function(res) {
          res.setEncoding("utf8");
          res.on("data", function (data) {
            console.log("Coverage data posted successfully");
            dfd.resolve();
          });
        });
        post_req.on("error", function(e) {
          console.log("Coverage data post failed", e);
          dfd.reject(e);
        });
        post_req.write(data);
        post_req.end();
      }
      catch (e) {
        console.log("An error occurred handling coverage data", e);
      }
    });

如何在拆解中实例化 promise?

仅供参考...我知道 Intern 包含代码覆盖功能,但它们不符合我们的特定要求。

您需要创建一个承诺,然后 return 自己创建。您可以使用自己的 Promise 库、原生 Promises(如果它们存在于您正在测试的平台上),或者您可以使用 'intern/dojo/Deferred'(但请注意,最后一个将要求您在下一个版本时更改测试已发布)。