0

这是我的 Pact 类的样子,您可以看到 PactDir 已指定。当测试通过时,它只创建日志文件夹/文件,而不是契约合约。

        PactBuilder = new PactBuilder(new PactConfig
        {
            SpecificationVersion = "2.0.0",
            PactDir = @"C:\temp\pacts",
            LogDir = @"c:\temp\logs"
        });

这就是测试文件的样子。使用 nUnit 框架。

    [Test]
    public void Consumer_Test()
    {
        //ARRANGE
        _mockProviderService
            .Given("Testing service")
            .UponReceiving("My API")
            .With(new ProviderServiceRequest
            {
                Method = HttpVerb.Post,
                Path = "/documents/",
                Headers = new Dictionary<string, object>
                {
                    { "Accept", "application/json" }
                }
            })
            .WillRespondWith(new ProviderServiceResponse
            {
                Status = 200,
                Headers = new Dictionary<string, object>
                {
                    { "Content-Type", "application/json; charset=utf-8" }
                },
                Body = new
                {
                    id = 1,
                    name = "joe"
                }
            });


        //ACT
        var consumer = new ApiClient(_mockProviderServiceBaseUri);
        var result = consumer.GetStatusCode().GetAwaiter().GetResult();


        //ASSERT
        Assert.AreEqual(1, result.id);
        Assert.AreEqual("joe", result.name);

        _mockProviderService.VerifyInteractions();
    }
4

2 回答 2

0

感谢来自 slack.pact.io 的 Matt 在#pact-net 聊天中提供以下解决方案。

基本上,我们没有点击下面的代码

    public void Dispose()
    {
        PactBuilder.Build();
    }

测试类必须实现 IDisposable ,一旦我们这样做并点击上面的代码就可以了,合约文件/协议文件就被创建了。您可能必须将 ContractPact.cs 中的所有 PactBuilder 代码放入测试类并尝试。

于 2021-11-03T12:37:19.207 回答
0

您需要调用相关的生命周期方法以确保编写协议 - 您是否设置了dispose构建协议的方法?

例如

  public void Dispose()
  {
    PactBuilder.Build(); //NOTE: Will save the pact file once finished
  }

您可能会发现此研讨会很有帮助:https ://github.com/pact-foundation/pact-workshop-dotnet-core-v1/blob/master/CompletedSolution/Consumer/tests/ConsumerPactClassFixture.cs#L56-L60

于 2021-10-15T10:35:04.470 回答