我正在使用MStest来测试我的控制器。
我要测试此操作:
[HttpGet(Name = "GetGroups")]
public async Task<IActionResult> Get()
{
var groups = await _unitOfWork.Repository<Groupe>().GetAllAsync();
var groupsDto = Mapper.Map<IEnumerable<GroupDto>>(groups);
if (groupsDto.Count() == 0)
{
return NotFound();
}
return Ok(groupsDto);
}
此操作的测试之一如下所示:
[TestMethod]
public async Task Group_Get_Should_Return_InstanceOfTypeOkNegotiatedContentResultIEnumerableGroupDto()
{
// Arrange
moqGroupRepository.Setup(g => g.GetAllAsync(null)).ReturnsAsync(groups).Verifiable();
moqUnitOfWork.Setup(x => x.Repository<Groupe>()).Returns(moqGroupRepository.Object);
var controller = new GroupController(moqUnitOfWork.Object);
// Act
var actionResult = await controller.Get() as OkNegotiatedContentResult<IEnumerable<GroupDto>>;
// Assert
Assert.IsInstanceOfType(actionResult, typeof(OkNegotiatedContentResult<IEnumerable<GroupDto>>));
}
这里的问题是ASP.Net Core项目测试中不知道OkNegotiatedContentResult。
我应该用什么来测试Ok()
结果?
这里的问题是在ASP网络核心项目测试中OkNegotiatedContentResult是未知的,我应该使用什么来测试Ok()结果?
您可以通过安装定义了Microsoft.AspNetCore.Mvc
实现的NuGet包来解决此问题IActionResult
。
但是,ASP.NET Core不包含OkNegotiatedContentResult
类型,它来自ASP.NET Web API。在ASP.NET CoreController.Ok()
方法中返回实例的OkObjectResult
类型。
您在这两个语句中的检查也不一致:
var actionResult = await controller.Get() as OkNegotiatedContentResult<IEnumerable<GroupDto>>;
Assert.IsInstanceOfType(actionResult, typeof(OkNegotiatedContentResult<IEnumerable<GroupDto>>));
as
null
如果无法将对象强制转换为请求的类型,则运算符将返回。因此,您可以将第二张支票替换为以下内容:
Assert.IsNotNull(actionResult);
因此,所需步骤为:
Microsoft.AspNetCore.Mvc
NuGet软件包安装到您的Test项目。通过以下方式调整测试代码:
// ...
using Microsoft.AspNetCore.Mvc;
[TestMethod]
public async Task Group_Get_Should_Return_InstanceOfTypeOkNegotiatedContentResultIEnumerableGroupDto()
{
// Arrange
moqGroupRepository.Setup(g => g.GetAllAsync(null)).ReturnsAsync(groups).Verifiable();
moqUnitOfWork.Setup(x => x.Repository<Groupe>()).Returns(moqGroupRepository.Object);
var controller = new GroupController(moqUnitOfWork.Object);
// Act
var actionResult = await controller.Get() as OkObjectResult;
// Assert
Assert.IsNotNull(actionResult);
Assert.IsInstanceOfType(actionResult.Value, typeof(IEnumerable<GroupDto>));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句