.net - ASP.NET Core 中返回 IEnumerable 的单元测试控制器逻辑在 JsonResult
问题描述
我有一个单元测试来验证控制器方法GetUser
,我想调查resultsets
是否有任何错误。
public void TestApiGetUser()
{
GenericController controller = new GenericController();
var result = controller.GetUser();
result.ShouldNotBeNull();
var resultObject = Assert.IsType<JsonResult>(result);
var data = ((ActionResult<IEnumerable<Resultset>>)(JsonResult)result).Value as IEnumerable<Resultset>; //this is returning null
//how to access data.Any(x => x.IsError) to test if there is any error in the API call?
}
控制器具有以下GetUser
端点,如下所示:
[HttpPost]
[Route("User")]
public JsonResult GetUser()
{
var result = _apiOrchestrator.GetUserData();
return Json(result);
}
GetUserData()
看起来像:
public IEnumerable<Resultset> GetUserData()
{
IEnumerable<Resultset> result = null;
//Some code
//Fill result object with user data
return result;
}
该Resultset
对象如下所示:
public class Resultset
{
public string Name { get; set; }
public string Data { get; set; }
public bool IsError { get; set; } = false;
public List<string> ErrorMessages { get; set; }
}
我在这里阅读了很多文章,但没有看到任何对我有用的东西。任何帮助,将不胜感激。
UPDATE 2
:如果我这样做:
var model = Assert.IsAssignableFrom<IEnumerable<Resultset>(resultObject.Value);
Assert.True(resultsets.Any(x=>x.IsError));
我想我得到了上面的代码。但是,这是最好的方法吗?
解决方案
这比我想象的要简单。如果有人正在寻找他们试图评估IEnumerable<T>
. 我相信还有其他方法,但这就是我的测试工作的原因。随意添加您的解决方案以供将来参考。
public void TestApiGetUser()
{
GenericController controller = new GenericController();
var result = controller.GetUser();
var resultsets = Assert.IsAssignableFrom<IEnumerable<Resultset>>(result.Value);
Assert.DoesNotContain(resultsets, x => x.IsError);
Assert.DoesNotContain(resultsets, x => x.ErrorMessages.Count > 0);
}
推荐阅读
- python - 如何在python中同时使用封装和继承
- html - iOS Safari HTML5 音频播放 - 锁定屏幕下一个/上一个按钮已禁用
- asp.net-mvc - Fiddler 捕获 Web.API
- python - 如何识别是否单击了 Angular 切换开关切换?
- php - 如何显示此字符串中每个字母的出现次数
- symfony - Vichupload没有映射....?
- python - Numpy seterr 没有检测到溢出
- c# - .NET 5.0 的 EXO PowerShell V2 模块远程会话 Cryptography.SHA256Cng 错误
- c# - ASP.NET Core 序列化导致空对象
- jenkins - 有没有办法在 Jenkins 中为 Office 365 webhook 通知设置自定义条件?