Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该模拟ControllerContext来单元测试我的JSonnerResult数据吗_C#_Asp.net Mvc_Unit Testing_Json.net - Fatal编程技术网

C# 我应该模拟ControllerContext来单元测试我的JSonnerResult数据吗

C# 我应该模拟ControllerContext来单元测试我的JSonnerResult数据吗,c#,asp.net-mvc,unit-testing,json.net,C#,Asp.net Mvc,Unit Testing,Json.net,在我的asp.net mvc 4.0项目中,我在这里使用JsonNetResult类: 如何单元测试我的c#类是否正确转换为json格式 Json转换是在ExecuteSult方法中执行的,这似乎是不可能实现的 根据www.mock 有些人甚至说,仅仅为了json测试,这是太多的模拟工作 有人说为什么不直接测试JsonConvert.SerializeObject(_data);方法 如果您想测试您的C#类是否可以序列化,然后尝试直接序列化它,请记住单元测试的重点是测试一个特定的操作,您提供的

在我的asp.net mvc 4.0项目中,我在这里使用JsonNetResult类:

如何单元测试我的c#类是否正确转换为json格式

Json转换是在ExecuteSult方法中执行的,这似乎是不可能实现的

根据www.mock

有些人甚至说,仅仅为了json测试,这是太多的模拟工作

有人说为什么不直接测试JsonConvert.SerializeObject(_data);方法


如果您想测试您的C#类是否可以序列化,然后尝试直接序列化它,请记住单元测试的重点是测试一个特定的操作,您提供的链接可以做几件事。为了对其进行单元测试,您必须创建一个方法,在给定当前状态的情况下执行大部分工作,而不是使用隐式状态


要直接序列化它,只需调用
if(Data!=null)
的内容,为它提供您想要提供的信息。请注意,您需要为其提供的一条信息是要写入的流,因为它直接写入
响应

您的意思是我应该直接调用Json.NET序列化程序/反序列化程序?关于要编写的流:对我来说,似乎我必须模拟HttpContext.Response。你觉得怎么样?@Elisa:没有理由去模仿这个响应,它只是一个流,
MemoryStream
可以让你不用做那么多的工作就可以分析结果。好吧,但是我的json永远是字符串,我如何将我的列表与字符串进行比较?我不想解析json字符串…@Elisa:与任何单元测试一样,您有一个预定的输入和输出。下面是Phil、John、Carl的列表,以及表示它们的JSON字符串。您可能会遇到额外空白的问题,但您可以在比较之前删除所有空白。我有一个预先确定的输入是。但是输出是序列化程序确定的json字符串。这个序列化程序只在调用ExecuteSult时调用,如果。。。我想我会用QUnit测试我的JsonNetResult,它最有意义,如下所示: