Смоделировать и проверить объект запроса, переданный в PostAsJsonAsyncC#

Место общения программистов C#
Anonymous
Смоделировать и проверить объект запроса, переданный в PostAsJsonAsync

Сообщение Anonymous »

Есть ли способ проверить объект запроса, переданный в HttpClient.PostAsJsonAsync. Объект запроса создается внутри метода, подлежащего модульному тестированию. Поэтому мне нужно убедиться, что объект запроса создан с правильными значениями.
Я попробовал следующее и ожидаю проверить объект searchrequest, сравнив значения, как показано ниже.
public async Task Test()
{
//Arrange
var handlerMock = new Mock();
handlerMock.Protected()
.Setup(
"SendAsync",
ItExpr.IsAny(),
ItExpr.IsAny()
)
.ReturnsAsync(new HttpResponseMessage
{
StatusCode = HttpStatusCode.OK,
Content = new StringContent("{'foo':'bar'}")
});
httpClient = new HttpClient(handlerMock.Object);

//ACT
var criteria = new Criteria();
await SomeMethodToTestAsync(criteria);

//Assert
var publishedDateStart = new DateOnly(2021, 10, 17);
handlerMock.Protected().Verify(
"SendAsync",
Times.Exactly(1), // we expected a single external request
ItExpr.Is(req =>
req.Method == HttpMethod.Post // we expected a POST request
),
ItExpr.IsAny(),
ItExpr.Is(r => r.PublishedDateStart == publishedDateStart) // this doesn't work
);
}

//Method to be tested
public async Task SomeMethodToTestAsync(Criteria criteria)
{
var url = "https://example.com";
// build some complext request from criteria
var searchRequest = new SearchRequest
{
PublishedDateStart = new DateOnly(2021, 10, 17)
};
var searchResponse = await httpClient.PostAsJsonAsync(url, searchRequest);

//other code
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... sjsonasync

Вернуться в «C#»