我想测试我的Express应用。在应用程序准备就绪和承诺解决之前,我会做一些异步设置。所以我把测试放在then
函数中,但它们没有运行。
Mocha没有错误,而是报告" 0测试通过"。当我正常运行应用程序(node server.js)时,一切正常。
如何在then
函数中运行测试?
const app = new App();
app.ready.then(() => {
const express = app.express;
describe("GET api/v1/posts", test( () => {
beforeEach((done) => {
instance.testHelper();
done();
});
it("responds with array of 2 json objects", () => {
return chai.request(express).get("/api/v1/posts")
.then((res: ChaiHttp.Response) => {
expect(res.status).to.equal(200);
expect(res).to.be.json;
expect(res.body).to.be.an("array");
expect(res.body.length).to.equal(2);
});
});
it("json objects has correct shape", () => {
return chai.request(express)
.get("/api/v1/posts")
.then((res: ChaiHttp.Response) => {
const all: Post[] = res.body as Post[];
const post: Post = all[0];
expect( post ).to.have.all.keys( ["id", "author", "text"] );
});
});
}));
})
.catch( (err) => {
console.err(err); // no errors!
});
答案 0 :(得分:0)
您想使用before
挂钩,并稍微重新构建您的测试。
下面的代码应该可以工作(但是我没有在设置了mocha的计算机上输入这个代码,所以我无法测试它。)
const app = new App();
describe('the test to run', () => {
let express = null;
before((done) => {
app.ready.then(() => {
express = app.express;
done();
});
});
it("test here", () => {
// some test
});
});