I am trying to Unit Test the code below.
public async Task<AppErrorCountByDateListVm> GetAppErrorCountByDateAsync()
{
var accessToken = await _httpContextAccessor.HttpContext.GetTokenAsync("access_token");
if (accessToken != null)
{
_httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
}
...
Specially I want to moq / set up: _httpContextAccessor.HttpContext.GetTokenAsync
Below is my Unit Test:
private IErrorLogService _sut;
private Mock<HttpClient> _httpClient;
private Mock<IHttpContextAccessor> _httpContextAccessor;
private Mock<IJsonSerializerUtility> _jsonSerializerUtility;
[SetUp]
public void RunBeforeEachTest()
{
_httpClient = new Mock<HttpClient>();
_httpContextAccessor = new Mock<IHttpContextAccessor>();
_jsonSerializerUtility = new Mock<IJsonSerializerUtility>();
_sut = new ErrorLogService(_httpClient.Object, _httpContextAccessor.Object, _jsonSerializerUtility.Object);
}
[Test]
public async Task OnInitializedAsyncTest()
{
//Arrange
_httpContextAccessor.Setup(h => h.HttpContext.GetTokenAsync("access_token")).ReturnsAsync(It.IsAny<string>());
//Act
await _sut.GetAppErrorCountByDateAsync();
//Assert
}
I am getting the following error messages:
System.NotSupportedException : Unsupported expression: ... => ....GetTokenAsync("access_token")
Extension methods (here: AuthenticationHttpContextExtensions.GetTokenAsync) may not be used in setup / verification expressions.
I assume I am missing a few steps.
Any help would be appreciated.