Файл пакта контракта Pact.net не создан в указанном каталоге, хотя тест пройден

Так выглядит мой класс 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();
    }

2 ответа

Вам нужно вызвать соответствующий метод жизненного цикла, чтобы убедиться, что пакт написан - вы настроили 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

Спасибо Мэтту из slack.pact.io в чате #pact-net за решение, приведенное ниже.

По сути, мы не попали в код ниже

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

Тестовый класс должен был реализовать IDisposable, и как только мы это сделаем и нажмем приведенный выше код, он заработает, будет создан файл контракта / файл pact. Возможно, вам придется поместить весь код PactBuilder из ContractPact.cs в тестовый класс и попробовать.

Другие вопросы по тегам