I have a xUnit test like:
[Fact]
public async void GetLocationsCountAsync_WhenCalled_ReturnsLocationsCount()
{
_locationsService.Setup(s => s.GetLocationsCountAsync("123")).ReturnsAsync(10);
var controller = new LocationsController(_locationsService.Object, null)
{
ControllerContext = { HttpContext = SetupHttpContext().Object }
};
var actionResult = await controller.GetLocationsCountAsync();
actionResult.Value.Should().Be(10);
VerifyAll();
}
Source is
/// <summary>
/// Get the current number of locations for a user.
/// </summary>
/// <returns>A <see cref="int"></see>.</returns>
/// <response code="200">The current number of locations.</response>
[HttpGet]
[Route("count")]
public async Task<ActionResult<int>> GetLocationsCountAsync()
{
return Ok(await _locations.GetLocationsCountAsync(User.APropertyOfTheUser()));
}
The value of the result is null, causing my test to fail, but if you look at ActionResult.Result.Value
(an internal property) it contains the expected resolved value.
See the following screen capture of the debugger.
How do I get the actionResult.Value to populate in a unit test?
ActionResult.Result
is populated orActionResult.Value
is populated but not both. I didn't find that evident from the documentation. learn.microsoft.com/en-us/dotnet/api/… – Pinto