Fix FluentAssertions (actual body is not displayed in error message) (#1085)

* Fix FluentAssertions (actual body is not displayed in error message)

* .

* .

* raw
This commit is contained in:
Stef Heyenrath
2024-03-20 08:24:43 +01:00
committed by GitHub
parent 27a673953d
commit d5fa385a46
3 changed files with 149 additions and 36 deletions

View File

@@ -702,7 +702,11 @@ public class WireMockAssertionsTests : IDisposable
// Act
var httpClient = new HttpClient();
await httpClient.PostAsync($"{server.Url}/a", new StringContent(@"{ ""x"": ""y"" }"));
var requestBody = new
{
x = "y"
};
await httpClient.PostAsJsonAsync($"{server.Url}/a", requestBody);
// Assert
server
@@ -740,6 +744,103 @@ public class WireMockAssertionsTests : IDisposable
server.Stop();
}
[Fact]
public async Task WithBodyAsJson_When_NoMatch_ShouldHaveCorrectErrorMessage()
{
// Arrange
var server = WireMockServer.Start();
server
.Given(Request.Create().WithPath("/a").UsingPost())
.RespondWith(Response.Create().WithBody("A response"));
// Act
var httpClient = new HttpClient();
var requestBody = new
{
x = "123"
};
await httpClient.PostAsJsonAsync($"{server.Url}/a", requestBody);
// Assert
Action act = () => server
.Should()
.HaveReceived(1)
.Calls()
.WithBodyAsJson(new { x = "y" })
.And
.UsingPost();
act.Should()
.Throw<Exception>()
.WithMessage("""Expected wiremockserver to have been called using body "{"x":"y"}", but didn't find it among the body/bodies "{"x":"123"}".""");
server.Stop();
}
[Fact]
public async Task WithBodyAsString_When_NoMatch_ShouldHaveCorrectErrorMessage()
{
// Arrange
var server = WireMockServer.Start();
server
.Given(Request.Create().WithPath("/a").UsingPost())
.RespondWith(Response.Create().WithBody("A response"));
// Act
var httpClient = new HttpClient();
await httpClient.PostAsync($"{server.Url}/a", new StringContent("123"));
// Assert
Action act = () => server
.Should()
.HaveReceived(1)
.Calls()
.WithBody("abc")
.And
.UsingPost();
act.Should()
.Throw<Exception>()
.WithMessage("""Expected wiremockserver to have been called using body "abc", but didn't find it among the body/bodies "123".""");
server.Stop();
}
[Fact]
public async Task WithBodyAsBytes_When_NoMatch_ShouldHaveCorrectErrorMessage()
{
// Arrange
var server = WireMockServer.Start();
server
.Given(Request.Create().WithPath("/a").UsingPost())
.RespondWith(Response.Create().WithBody("A response"));
// Act
var httpClient = new HttpClient();
await httpClient.PostAsync($"{server.Url}/a", new ByteArrayContent(new byte[] { 5 }));
// Assert
Action act = () => server
.Should()
.HaveReceived(1)
.Calls()
.WithBodyAsBytes(new byte[] { 1 })
.And
.UsingPost();
act.Should()
.Throw<Exception>()
.WithMessage("""Expected wiremockserver to have been called using body "byte[1] {...}", but didn't find it among the body/bodies "byte[1] {...}".""");
server.Stop();
}
[Fact]
public async Task HaveReceived1Call_WithBodyAsBytes()
{