C# 在MVC.NET中对json搜索结果进行单元测试

C# 在MVC.NET中对json搜索结果进行单元测试,c#,asp.net-mvc,json,C#,Asp.net Mvc,Json,我尝试测试一个方法,该方法返回一个Json编码的项目列表,这些项目是针对大型数据集的搜索结果: public JsonResult() { List<Stuff> myStuff = new List<Stuff>(); ListItem item = new ListItem(); mystuff.Add(item); return Json(myStuff, JsonRequestBehaviour.AllowGet); }

我尝试测试一个方法,该方法返回一个Json编码的项目列表,这些项目是针对大型数据集的搜索结果:

public JsonResult()
{
     List<Stuff> myStuff = new List<Stuff>();
     ListItem item = new ListItem();
     mystuff.Add(item);
     return Json(myStuff, JsonRequestBehaviour.AllowGet);
}
publicjsonresult()
{
List myStuff=新列表();
ListItem=新建ListItem();
添加(项目);
返回Json(myStuff、jsonrequestbehavior.AllowGet);
}
我的问题是,我只知道返回列表上的第一个项目——根据搜索结果,每次都可以生成不同的列表


目前,我正试图通过简单地将返回的第一个项目与“正确”值进行比较来测试它,但我认为这并不像我希望的那样可靠(例如,我希望接下来测试最有可能的结果等)。以前有人遇到过类似的问题吗?

单元测试需要可预测的结果。如果测试的是其他函数,则重写JsonResult()函数以始终返回相同的结果,或者使用单独的url进行测试,以便json结果始终相同。然后,您可以得到多个json结果,每个json结果都针对调用函数中的不同功能/错误进行测试。

当进行单元测试时,测试的范围仅是您正在测试的特定方法的功能

单元测试不会测试编写测试的方法如何获取数据。它所要测试的只是该方法对数据的处理是它假设的

如果您的方法只是返回一个搜索结果,那么您所测试的就是,如果您执行该方法,将返回一些搜索结果

在这种情况下,您需要准备要返回的数据,并在单元测试期间方法执行时告诉搜索方法的模拟实例返回该数据

如果您的方法对搜索结果的影响比您编写几个单元测试来验证它的预期效果还要大

如果要测试层之间的通信是否正确,以及数据是否正确地从数据库返回,则需要编写集成测试,而不是单元测试