【发布时间】:2020-08-07 03:53:12
【问题描述】:
目前正在编写单元测试以检查它是否返回正确的场所类型
[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);
}
当我尝试在数据变量中转换 OkObjectResult 时,它只输出 null?
我在转换过程中是否做错了什么?
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);
}
【问题讨论】:
-
我在这里没有看到关于转换/转换的任何问题,我在测试中做了很多同样的事情。你能和我们分享一下你对
GetVenueType的行动实施吗? -
你为什么期待 OkObjectResult?
-
@MuhammadVakili 刚刚更新了
标签: c# list unit-testing asp.net-core