2010-05-16 152 views
0

我只是想知道其他人如何在asp.net mvc中测试控制器动作?我的大多数依赖项都被注入到我的控制器中,所以在操作方法中没有大量的逻辑,但可能有一些条件逻辑,例如我认为这是不可避免的。asp.net mvc控制器动作测试

在过去,我已经为这些操作方法编写了测试,嘲笑了依赖关系并测试了结果。我发现这是非常脆弱的,并且需要一个真正的PITA来维护。让'Expect'和'Stub'方法在每个地方都很容易中断,但是我没有看到任何其他测试控制器操作的方式。

我实际上认为手动测试它们可能更容易!任何人有任何建议?也许我在这里失去了一些东西?

感谢

伊姆兰

回答

1

我不认为我已经writtin一个测试控制器,因为我所有的逻辑是在其他地方。就像你说的那样,控制器的代码量是最小的,其中的任何逻辑都非常简单,所以它实际上并不承担整个测试策略。

我喜欢给我的模型一大堆的测试,以及像DTL的层和数据层等

我想我已经看到了一些人嘲笑他们的copntollers任何支持的代码,通过在预期模型并看看结果的输出,但我不知道给你多少。

我想如果我要测试一个控制器,我只会真的测试后期操作,以确保给我的控制器什么是我在我的模型以及测试(安全)。但是,我在不同层次的一些地方拥有安全感。

但是所有这些都是集成测试功能。功能我在别处像我之前说过的那样。

然后再次,如果它值得写,那么值得测试吧?我想你需要决定什么和哪里易碎的位,以及你希望他们如何测试。

+0

我同意,我已经看到样品和博​​客与控制器谈论TDD,并一直想知道您从中获得多少收益。我都是为TDD设计的,但不知为什么编写控制器的测试会把大部分工作交给其他组件。我同意这些将是真正的集成测试。 我在想这个的主要原因是为了减轻回归测试。如果我对网站进行了更改,我会进行通常的单元测试,但也有可能某些视图或控制器可能在此过程中发生故障。目前看起来我会通过手动测试。 – Imran 2010-05-16 15:34:49

+2

那么控制器中总是有一些逻辑,或者为什么有它们?我会测试你写的那个逻辑是*那里。例如,它将正确的工作交给正确的组件并在那里停止。 – Haacked 2010-05-18 07:40:40

+0

不过,正是这种基于交互的测试,我发现它非常脆弱。我认为我可能会将控制器测试限制为诸如异常处理和参数验证之类的事情作为折衷。或者我想,只是测试正确的组件被调用就足够了,而不是对它们被调用的参数设置具体的期望值等。 – Imran 2010-05-18 14:20:23