Currently writing a unit test to check that it returns the correct venueType
[Fact]
public async Task GetVenue_Should_Return_GetVenueType()
{
var venues = new[]
{
new VenueTypeResponse()
{
id = 1,
Name = "Cafe",
ImageUrl = "Cafe.png"
},
new VenueTypeResponse()
{
id = 2,
Name = "Takeaway",
ImageUrl = "Takeaway.png"
}
};
mockedVenueService.Setup(x => x.GetVenueType()).Returns(Task.FromResult(new List<VenueTypeResponse>(venues)));
var controller = new VenueController(mockedVenueService.Object, mockedCafeService.Object, mockedCafeRequestValidator.Object);
var result = await controller.GetVenueType() as OkObjectResult;
var data = result.Value as List<VenueTypeResponse>; //errors here: outputs null
Assert.IsType<OkObjectResult>(result);
Assert.Collection(data, x => Assert.Contains("Cafe", x.Name),
x => Assert.Contains("Takeaway", x.Name));
Assert.Collection(data, x => Assert.Contains("Cafe.png", x.ImageUrl),
x => Assert.Contains("Takeaway.png", x.ImageUrl));
Assert.Equal(StatusCodes.Status200OK, result.StatusCode);
}
when I try to do convert the OkObjectResult in the data variable it just outputs null?
Am I doing something wrong in the process of the conversion?
Implementation of GetVenueType()
[HttpGet]
[Route("venue-type")]
[ProducesResponseType(typeof(VenueTypeResponse), 200)]
[ProducesResponseType(401)]
public async Task<IActionResult> GetVenueType()
{
var result = new VersionResponse()
{
Data = await _venueService.GetVenueType()
};
return Ok(result);
}
Do you mean you cannot get List<> from OkObjectResult?Here is a demo to get list from OkObjectResult:
TestController:
public async Task<IActionResult> GetVenueType()
{
List<Spray> sprays = new List<Spray> { new Spray { Id = 1, Name = "product1", Price = 10, Quantity = 1, Total = 1, Image = "image1.png" }, new Spray { Id = 2, Name = "product2", Price = 20, Quantity = 1, Total = 20, Image = "Image2.png" } };
return Ok(sprays);
}
public ActionResult TestOK()
{
IActionResult result = new TestController().GetVenueType().Result;
var data = result as OkObjectResult;
List<Spray> sprays = (List<Spray>)data.Value;
List<Spray> ss = sprays.Where(s => s.Name.Contains("product1")).ToList<Spray>();
return Ok(ss);
}
result:

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With