摩卡测试–完全在“之前”完成,然后运行“它”

时间:2019-07-17 22:38:53

标签: javascript typescript mocha webdriver-io

我正在使用Mocha 6.1.4(在WebdriverIO 5.11.6下)运行一些测试。我想在before中完成某事的执行(阅读:通过HTTP调用存储一些值),然后开始运行测试– it伙伴。基本上,将Everythig视为同步调用。这是我正在使用的(TypeScript)代码的一部分(摘录):

// file: ./test/service.spec.ts

describe("#this stuff", () => {
  before(() => {
    browser.url("login-url");
  });

  beforeEach(() => {
    const service: TheService = new TheService();
    return service.setUp(); // ...superagent returns a Promise
  });

  it("should-do-it", () => {
      // ...test + expectations here
    });
  });
});

// ./src/the-service.ts

import * as superagent from "superagent";

// ...

public setUp() {
  return superagent.post(this.uri)
      .accept("application/json")
      .set("Content-Type", "application/json")
      .send(body)
      .then();
}

如果我正确理解了Mocha docs(以及StackOverflow中的一些问题/解答),还需要在Promise中返回beforeEach,但这是我要做的全部,但是到目前为止,这是行不通的。

我发现的唯一一致的方法是执行it方法的内容作为setUp()的回调:

// ...inside `it`
service.setUp().then(() => {
  // ...test + expectations here
});

精通ECMAScript / TypeScript世界的人可以在这里找到一些启示吗?

1 个答案:

答案 0 :(得分:0)

尝试一下

beforeEach(async () => {
  const service: TheService = new TheService();
  await service.setUp(); // ...superagent returns a Promise
});