Данные испытаний PACT, управляемых потребителем, в провайдере
Я выполняю какой-то тест, в соответствии с которым, если Потребитель установил какой-либо идентификатор или какой-либо текст, которого нет в базе данных провайдера, тогда я хочу выполнить следующий шаг в тестах провайдера
- Получите PACT-файл с информацией о том, что нужно сначала настроить
- Тогда у меня будет моя функция, которая начнет вставлять эти недоступные данные в БД
- Затем сделайте вызовы API, которые обеспечат фактический ответ.
Теперь я хочу знать, какое поле должен использовать Consumer, чтобы провайдер знал, что перед фактическим вызовом API необходимо выполнить некоторые предварительные условия или предварительную настройку.
Я видел пример, где есть setUp: InsertIntoDatabase, но не сказано, как найти входные данные, предоставленные потребителем.
1 ответ
[TestMethod]
public void Ensure_OfferApi_HonoursPact_WithDeal_ForSendingLatestSoftOffer()
{
//Arrange
var outputter = new CustomOutputter();
var config = new PactVerifierConfig();
config.ReportOutputters.Add(outputter);
IPactVerifier pactVerifier = new PactVerifier(() => { InsertEventIntoDatabase(); }, () => { }, config);
pactVerifier
.ProviderState(
"Given the Offer Exist in Offer System I WANT TO See Latest SoftOffer",
setUp: InsertEventsIntoDatabase); // in case you want to insert something
//Act / Assert
using (var client = new HttpClient { BaseAddress = new Uri("http://localhost:9999") })
{
pactVerifier
.ServiceProvider("Offer API", client)
.HonoursPactWith("Consumer")
.PactUri(@"C:\TOSS\TestSample\log\deal-offer.json")
.Verify();
}
// Verify that verifaction log is also sent to additional reporters defined in the config
Assert.IsNotNull(outputter.Output);
}
Lets say the setup function is InsertEventsIntoDatabase and I want to add events what ever consumer is providing via PACT file. so that I dont need to update this code when ever Consumer changes the input.