Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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

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 对MVC视图进行单元测试意味着什么?_Asp.net Mvc_Unit Testing_Model View Controller - Fatal编程技术网

Asp.net mvc 对MVC视图进行单元测试意味着什么?

Asp.net mvc 对MVC视图进行单元测试意味着什么?,asp.net-mvc,unit-testing,model-view-controller,Asp.net Mvc,Unit Testing,Model View Controller,在一个新的ASP.NET MVC应用程序上,我们遵循TDD方法,使用NUnit进行单元测试,使用Unity进行依赖性注入 通过调整我们的模型,以最合适的方式为我们的视图提供数据,我们的视图被尽可能地“哑” 单元测试我们的观点是否有好处?如果是这样的话-怎么做?我还不太熟悉ASP.net MVC,但我对MVC模式有很好的了解。一般来说,我会说,通过测试你的观点,你不会获得更多。通过使用MVC方法,大多数(如果不是全部的话)域逻辑驻留在控制器类中,业务逻辑驻留在业务/服务层类中。因此,对服务层进行单

在一个新的ASP.NET MVC应用程序上,我们遵循TDD方法,使用NUnit进行单元测试,使用Unity进行依赖性注入

通过调整我们的模型,以最合适的方式为我们的视图提供数据,我们的视图被尽可能地“哑”

单元测试我们的观点是否有好处?如果是这样的话-怎么做?

我还不太熟悉ASP.net MVC,但我对MVC模式有很好的了解。一般来说,我会说,通过测试你的观点,你不会获得更多。通过使用MVC方法,大多数(如果不是全部的话)域逻辑驻留在控制器类中,业务逻辑驻留在业务/服务层类中。因此,对服务层进行单元测试应该确保满足业务逻辑(这是主要目标)。调查控制器的进一步测试(如果需要,可以使用Http请求的模拟对象)可以确保域逻辑正常


因此,单元测试您的观点在我看来并不是为了给您带来更多好处。我听说过视图测试与记录器(或类似框架)的关系,记录器模拟用户在UI上的点击等。

MVC模式的优点是视图应该非常轻量级,不包含需要测试的代码


如果视图确实包含需要测试的代码,则应将其移出控制器或模型并在其中进行单元测试。

本周早些时候,我刚刚阅读了Justin Ethernedge关于ASP.NET MVC测试的一篇好文章

以下是链接:

Justin确实在文章的一个小“侧边栏”部分提到了视图测试,并陈述了以下内容:

ASP.NET MVC代码隐藏页

如果您在最终版本之前遵循ASP.NET MVC,您可能已经注意到代码隐藏页面已从框架中删除。这些页面在ASP.NET MVC框架中不提供任何功能,并促进将逻辑放入不属于它的视图中。视图中包含的任何逻辑都很难测试,就像ASP.NET Web表单中的代码隐藏文件很难测试一样


我倾向于同意这一点,因为我认为“观点”内的逻辑是某种“气味”,而且,就个人而言,我想寻找一种方法来删除这样的逻辑,并将其放在控制器或模型中,这样更易于测试。

MVC模式的好处在于,与其他模式(或反模式)相比,您能够对更多的UI层进行单元测试。但是,测试视图实际上不能作为单元测试来完成,因为它需要一个外部依赖项(如浏览器)


这并不意味着你不应该测试视图,只是意味着你不能对视图进行单元测试。功能/集成测试仍然是一个好主意。

不过,它可以包含一个for循环来迭代实体集合并显示它们。for循环可能会中断,您可能有权测试循环逻辑以进行显示。@Andrei Rinea:创建一个帮助程序来呈现循环的功能,并对这些帮助程序进行单元测试。内容/脚本/css引用的帮助程序?这些对我来说是值得测试的,特别是如果它们有
Url.Content(“~/something”)