how to mock logger which consist JsonConvert.SerializeObject(object)

Viewed 62
[HttpPost]
[Route("GracieRequestForSuggestions")]
public async Task<IActionResult> GracieRequestForSuggestions([FromBody] PriceProposalDetailRequest priceProposalRequest)
{
    _logger.LogInformation("Gracie request payload -: " + JsonConvert.SerializeObject(priceProposalRequest));
    var response = await _proposalDetailService.GracieRequestForSuggestions(priceProposalRequest).ConfigureAwait(false);
    if (response)
    {
        return Ok();
    }
    else
    {
        return NotFound();
    }
}

This the controller method, I can mock the logger but logger contains JsonConvert.SerializeObject which i cannot able to mock so can someone help me with issue

[Fact(DisplayName = "GracieRequestForSuggestions By PriceProposalRequest Returns True")]
public void GracieRequestForSuggestionsTestReturnsTrue()
{
    _mocklogger.Setup(ml => ml.Log(It.IsAny<LogLevel>(), It.IsAny<EventId>(), It.IsAny<object>(), It.IsAny<Exception>(), It.IsAny<Func<object, Exception, string>>()));

    _mockProposalDetailService.Setup(x => x.GracieRequestForSuggestions(mockPriceProposalRequest.Object))
        .Returns(Task.FromResult(true));

    var controller = new PriceProposalDetailsController(_mockProposalDetailService.Object, _mocklogger.Object);

    // Act
    var actionResult = controller.GracieRequestForSuggestions(mockPriceProposalRequest.Object);
    // Assert


    var items = Assert.IsAssignableFrom<IActionResult>(actionResult.Result);
    //Assert.True(items);

    Assert.IsType<OkObjectResult>(actionResult);
    Assert.NotNull(actionResult);
}

this is the test case i have written

0 Answers
Related