.NET下升级Pact至v4后消费者契约测试遇Interop异常求助
Pact v4升级后Interop异常排查求助
错误详情
Message: PactNet.Exceptions.PactFailureException : Unable to perform the given action. The interop call indicated failure Stack Trace: InteropActionExtensions.CheckInteropSuccess(Boolean success) HttpInteractionDriver.WithRequest(String method, String path) RequestBuilder.WithRequest(String method, String path) RequestBuilder.WithRequest(HttpMethod method, String path) IRequestBuilderV2.WithRequest(HttpMethod method, String path) CasClientPact.EnsureCasClientHandlesAddItemEndpointWhenAlreadyIn() line 63
环境版本
- 操作系统:Windows 11
- .NET:6.0
- Pact Net:4.5.0
- NUnit:3.13.3
- NUnit3TestAdapter:4.5.0
- Microsoft.NET.Test.Sdk:17.7.2
演示项目信息
- Git仓库:Capstone project
- Tag:PactNotWorking
- 测试位置:casClient项目,cas.pact.consumer.test.cs文件
示例代码
using NUnit.Framework; using PactNet.Infrastructure.Outputters; using PactNet; public CasClientPact() { var config = new PactConfig { PactDir = @"../../../../artifacts/pacts" }; IPactV2 pact = Pact.V2("CasClient", "Cas", config); this.pact = pact.WithHttpInteractions(9222); } [Test] async public Task EnsureCasClientHandlesAddItemEndpointWhenAlreadyIn() { pact .UponReceiving("A request to add item that is already stored") .WithRequest(HttpMethod.Post, "/cas/someNs") .WithBody("alreadyin", "application/octet-stream") .WillRespond() .WithStatus(200) .WithBody("/cas/someNs/content/-AFBB8Hv7uIEEmV1Srn0Y-OkfnMplM-FX8TEh4-SucM", "text/plain; charset=utf-8"); await pact.VerifyAsync(async ctx => { byte[] bytes = Encoding.ASCII.GetBytes("alreadyin"); var result = await Client.AddItemAsync("someNs", bytes, "application/octet-stream"); Assert.AreEqual("/cas/someNs/content/-AFBB8Hv7uIEEmV1Srn0Y-OkfnMplM-FX8TEh4-SucM", result); }); }
问题说明
原有代码在Pact v3环境下可正常运行,已按照官方升级指南迁移至Pact v4版本,但执行消费者契约测试时触发上述Interop异常,现寻求该问题的解决方案。
内容的提问来源于stack exchange,提问作者Stave Escura
相关产品推荐
相关产品推荐

