我正在使用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世界的人可以在这里找到一些启示吗?
答案 0 :(得分:0)
尝试一下
beforeEach(async () => {
const service: TheService = new TheService();
await service.setUp(); // ...superagent returns a Promise
});