我正在尝试使用第三方微服务编写集成测试(假设它称为Service
)。将请求发送到Service
时,它将触发一个Webhook。我想做的是测试它是否正确解析了webhook。
import express from "express";
import bodyParser from "body-parser";
import { handleHook} from "./hook";
export const app = express();
app.use(bodyParser.json(), handleHook);
describe("integration", () => {
test("hook", async () => {
const mock = jest.fn();
app.post("/", (req, res) => {
mock(req);
res.send("");
});
const p = new Promise<Server>(resolve => {
const server = app.listen(3000, () => {
resolve(server);
});
});
const server = await p;
await upload();
jest.useFakeTimers();
setTimeout(() => {
server.close();
}, 15000);
jest.runAllTimers();
expect(mock).toHaveBeenCalledTimes(4);
});
});
但是,我遇到两个问题。首先,我得到了
测试运行一秒钟后,Jest没有退出。
这通常意味着您的测试中没有停止异步操作。考虑使用
--detectOpenHandles
运行Jest来解决此问题
但是使用--detectOpenHandles
不会显示如何解决此问题。
第二,由于Webhook是异步触发的,因此我如何确保捕获所有这些消息或等待一段时间以使其超时。