我在 .NET 下进行消费者合约测试时出现“互操作异常”

问题描述 投票:0回答:1

我有与 Pact v3 一起使用的代码。我已升级到 Pact v4,并按照升级指南中的说明进行操作。

当我运行 Pact 消费者测试时,出现以下错误:

 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
  • 契约网:4.5.0
  • NUnit:3.13.3
  • NUnit3TestAdapter:4.5.0
  • Microsoft.NET.Test.Sdk:17.7.2

演示项目

  • Git:Capstone 项目
  • 标签:协议不工作
  • 测试:项目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);
           });
       }
.net pact
1个回答
0
投票

.Given
调用中包含土耳其语字符(具体为
ş
ı
)时,我收到此错误。您的代码没有
.Given
调用;我建议您添加一个,看看会发生什么。

© www.soinside.com 2019 - 2024. All rights reserved.