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.NETMVC路由:选择哪种方法?_Asp.net Mvc_Unit Testing_Routes - Fatal编程技术网

Asp.net mvc 单元测试Asp.NETMVC路由:选择哪种方法?

Asp.net mvc 单元测试Asp.NETMVC路由:选择哪种方法?,asp.net-mvc,unit-testing,routes,Asp.net Mvc,Unit Testing,Routes,我是新的Asp.NETMVC和单元测试,所以如果问题有点愚蠢,我提前道歉 当单元测试传入路由时,我们必须向路由系统提供一个URL,并验证该URL是否得到正确处理 1但是如果路由单独测试,那么一个特定的单元测试将测试不超过一个路由,或者所有路由作为一个整体进行测试,即每个单元测试将测试RouteCollection.GetRouteData…返回的一个实例。。。;或者两者都有 2如果1的答案是路由应该作为一个整体进行测试,那么我很难理解我们需要向路由系统传递多少URL才能确保它正常工作: a据我所

我是新的Asp.NETMVC和单元测试,所以如果问题有点愚蠢,我提前道歉

当单元测试传入路由时,我们必须向路由系统提供一个URL,并验证该URL是否得到正确处理

1但是如果路由单独测试,那么一个特定的单元测试将测试不超过一个路由,或者所有路由作为一个整体进行测试,即每个单元测试将测试RouteCollection.GetRouteData…返回的一个实例。。。;或者两者都有

2如果1的答案是路由应该作为一个整体进行测试,那么我很难理解我们需要向路由系统传递多少URL才能确保它正常工作:

a据我所知,我们是否需要传递至少和注册路由一样多的URL,其中每个URL都应该由不同的路由处理,这样所有路由都有机会处理一个URL

所有的url应该在单个单元测试中进行测试,还是应该对每个url进行一个单元测试?如果是后者,那么单元测试的数量会不会与每个单元测试只测试一条路由相同

c假设我们向路由系统添加一条新路由,那么我们很可能还需要修改现有的单元测试,以便它们继续正常工作,而如果我们单独测试路由,那么就不需要修改现有的单元测试了


谢谢你

你应该小心这些类型的测试,因为你可以很容易地测试Asp.Net MVC代码,而微软大概就是这么做的。例如:这些测试不是在测试GetRouteData方法的功能吗

除非我误解了您的意思,否则听起来您只是想确保正确配置路由数据

<>我认为这类配置代码只是简单的一部分,不受单元测试的影响。这有几个原因:

配置可能发生在组合根目录中,例如,在global.asax中的应用程序_Start中

任何配置都会将系统初始化为技术正确的状态。就像您将生产组件替换为生产组件一样。系统工作正常;它只是需要为生产进行不同的配置

这些配置很可能在未来发生变化。例如,您提到可以稍后添加新路线。现有路线也有可能改变

端到端/将确保应用程序不会返回404,如果路由数据配置不正确,通常会发生这种情况

在考虑这一点之后,如果您在测试配置时保持不动摇,那么考虑创建一个处理此配置的抽象。也就是说,在注册这些路由的边界处

这将允许您模拟对Asp.NETMVC框架的调用,并验证是否发送了预期的配置