public async Task PostAsync_ShouldPostSuccessfully() { //Arrange _httpMessageHandler.Protected().Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .ReturnsAsync(new HttpResponseMessage() { StatusCode = HttpStatusCode.OK }); var httpClient = new HttpClient(_httpMessageHandler.Object) { BaseAddress = new Uri("http://test.com/"), }; _httpClientFactory.Setup(x => x.CreateClient("Test")).Returns(httpClient); //Act await _httpClientAdapter.PostAsync("Test", "/tests", new { Id = 1, Name = "Name" }); //Assert _httpMessageHandler.Protected().Verify( "SendAsync", Times.Once(), ItExpr.Is <HttpRequestMessage>(request => request.Method == HttpMethod.Post //&& request.Content == new StringContent("{\"Id\":1,\"Name\":\"Name\"}", Encoding.UTF8, "application/json") && request.RequestUri == new Uri("http://test.com/tests") ), ItExpr.IsAny <CancellationToken>()); }