Ich verwende PactNet, um eine API zu testen, die ein Array einer flexiblen Länge zurückgeben sollte.PACT .NET-Consumer-Test: flexible Länge Array
Wenn ich "myApi/items /" anrufe, sollte es eine Liste von Artikeln zurückgeben, bei denen der Verbraucher die genaue Größe nicht kennt. So sollte die Antwort wie folgt aussehen:
[
{
"id": "1",
"description": "foo"
},
{
"id": "2",
"description": "foo2"
},
{
"id": "3",
"description": "foo3"
}
]
oder dieses:
[
{
"id": "4",
"description": "foo4"
},
{
"id": "2",
"description": "foo2"
}
]
Wie erstelle ich den Vertrag für diese Interaktion?
In der documentation ist ein Beispiel in Ruby, aber ich finde nicht das Äquivalent in C#.
Ich benutze PactNet Version 2.1.1.
Bearbeiten: Hier ist ein Beispiel wie es aussehen soll. Was ich wissen möchte, ist, wie ich erkläre, dass der Körper eine Reihe von Gegenständen mit einer flexiblen Länge enthalten sollte.
[Test]
public void GetAllItems()
{
//Arrange
_mockProviderService
.Given("There are items")
.UponReceiving("A GET request to retrieve the items")
.With(new ProviderServiceRequest
{
Method = HttpVerb.Get,
Path = "/items/",
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 = // array of items with some attributes
// (somthing like: {"id": "2", "description": "foo"})
// with flexible length
});
var consumer = new ItemApiClient(_mockProviderServiceBaseUri);
//Act
var result = consumer.GetItems();
//Assert
Assert.AreEqual(true, result.Count > 0);
_mockProviderService.VerifyInteractions();
data.Dispose();
}
Thank you! Das ist genau das, wonach ich gesucht habe. –