Файл пакта контракта 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 в тестовый класс и попробовать.