我可以从模型中测试控制器方法吗?

时间:2017-07-27 14:32:59

标签: c# asp.net-mvc

我有一个内置在ASP.NET MVC中的网站,它使用XML文件作为其菜单系统的主干。该XML文件中的节点列出了菜单项,它们的显示文本以及调用的控制器名称和操作方法。我想到如果我可以使用控制器名称和操作方法名称调用控制器方法,我可以通过编程方式测试所有方法,看看它们是否会抛出错误。我不想在浏览器中显示该页面;只需运行控制器方法,任何错误都将记录在我的数据库中。我想用Test模型类中的代码来做这件事,但是我还不能编译它。 RenderAction是一种在我的View页面中工作的方法,但该模型表明该方法不存在。有人可以指导我如何让它发挥作用吗?

console debug:event-dispatcher

1 个答案:

答案 0 :(得分:2)

测试的重点是让您获得更好,更易于维护的代码。其中一部分是单元测试,它本质上是测试功能的谨慎单元。你在这里所拥有的是一种绝对乞求被重构的情况。当事情难以测试时,这肯定表明您的设计存在缺陷。

不是在动作中使用所有这些逻辑,然后尝试测试整个动作渲染逻辑以确定它是否正常工作,而是将逻辑分解为辅助类。然后,您应该能够轻松地测试该类中的方法是否返回了良好的结果。

我不确定你的意思是什么"复杂的单元测试结构",因为单元测试本质上很简单,几乎所有你需要的东西都被嵌入到.NET中(虽然更好的选择通常存在于第三方图书馆)。无论如何,开始单元测试所需要的只是创建一个单元测试项目,添加对要测试的项目的引用,然后添加一个简单的类,如:

[TestClass]  
public class MyAwesomeTests
{  
    [TestMethod]  
    public void TestSomething()  
    {
        ...
    }  
}