Angular13+Jest集成Pact v10.4.1时Mock Server未接收请求问题排查
Angular 13 + Jest + Pact v10.4.1 契约测试Mock Server无请求排查思路
检查Pact与Jest的异步执行顺序
- 确保Pact交互注册(
addInteraction)逻辑在HttpClient请求之前完成,用async/await包裹交互注册代码,避免请求发起时交互还未生效。 - 排查测试中所有异步操作(组件初始化、服务调用等)是否正确使用
await等待完成,防止请求提前发送。
- 确保Pact交互注册(
验证请求的完整匹配规则
- Pact采用严格匹配模式,核对请求的HTTP方法、路径、headers、查询参数是否与注册的交互完全一致,比如注意路径末尾斜杠差异、Content-Type等header是否匹配。
- 启用Pact调试日志(设置环境变量
PACT_LOG_LEVEL=debug),对比实际发送的请求与预期交互的差异细节。
检查Mock Server生命周期管理
- 确认测试用例的
beforeAll/afterAll钩子正确绑定了Mock Server的启动与销毁逻辑,测试结束时调用verifyAndPublish或finalize方法,避免服务器提前关闭。 - 针对Mock Server ID显示为
unknown的问题,排查Pact实例初始化是否正确,确保创建Mock Server时保存了有效实例引用。
- 确认测试用例的
排查Angular HttpClient配置干扰
- 移除测试模块中的
HttpClientTestingModule,该模块会拦截所有HttpClient请求,导致请求无法到达Pact Mock Server。 - 检查全局HTTP拦截器(如AuthInterceptor)是否在测试环境中被正确禁用,避免请求被修改或拦截。
- 移除测试模块中的
验证网络可达性
- 测试运行期间,手动用curl或Postman访问
http://127.0.0.1:50118/users/1,确认Mock Server是否正常响应,排查端口占用或服务器启动异常问题。 - 检查本地防火墙、代理设置,确保未阻止127.0.0.1的端口通信。
- 测试运行期间,手动用curl或Postman访问
内容的提问来源于stack exchange,提问作者Subodh Godbole
相关产品推荐
相关产品推荐

