Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
Asp.net mvc 在单元测试控制器操作时提供显式视图名称?_Asp.net Mvc_Unit Testing - Fatal编程技术网

Asp.net mvc 在单元测试控制器操作时提供显式视图名称?

Asp.net mvc 在单元测试控制器操作时提供显式视图名称?,asp.net-mvc,unit-testing,Asp.net Mvc,Unit Testing,Stephen Walther建议,在进行单元测试时,应该提供明确的视图名称 我当然想测试它们,但我很好奇这个建议在1.0版本中是否仍然有效 在测试中,只需检查viewResult是否为null。它们没有显式指定viewName,因此viewName为空。 我想删除实际代码中作为字符串提供的视图名称,但这些检查对我来说似乎没什么用处。。。 (我甚至想不出viewResult返回null的场景?!)如果控制器可以返回各种视图,那么提供显式视图名称很重要。然后您可以对控制器进行单元测试,它返回一个按

Stephen Walther建议,在进行单元测试时,应该提供明确的视图名称

我当然想测试它们,但我很好奇这个建议在1.0版本中是否仍然有效

在测试中,只需检查viewResult是否为null。它们没有显式指定viewName,因此viewName为空。 我想删除实际代码中作为字符串提供的视图名称,但这些检查对我来说似乎没什么用处。。。
(我甚至想不出viewResult返回null的场景?!)

如果控制器可以返回各种视图,那么提供显式视图名称很重要。然后您可以对控制器进行单元测试,它返回一个按名称返回的控制器。否则-我看不出使用它们的意义。

这里有两个独立的问题。第一个问题是,自从Stephen Walther编写了会改变建议的建议之后,MVC框架中是否有任何变化。这个问题的答案是“不”

第二个问题是,这项建议是否一种良好做法。我不同意斯蒂芬·沃尔特的观点。他的例子有点奇怪。他对“Index”操作的单元测试试图断言该操作返回一个显式视图名称,但显然没有。如果我编写了这个单元测试,我会断言视图名称等于空字符串。那么单元测试就会通过。单元测试不再断言该操作指定了某个名称的视图,而是有效地断言该操作指定该视图与该操作具有相同的名称。这是一个合法的测试

MVC框架背后的指导原则之一是约定优先于配置。换句话说,不应该要求您指定任何只是通常默认值的内容。视图名称的默认值与操作名称相同。WebFormsViewEngine的记录行为是查找与操作同名的视图,除非指定了单独的视图名称。因此,不指定视图名称与指定“使用默认视图名称”相同

因此,我认为指定与默认名称相同的视图名称不是一个好主意,我也不认为使用单元测试是违反此约定的一个好理由