2012-07-16 295 views
0

在过去的2个月里,我一直在努力学习新的MVC框架。在了解了所有面向对象概念后,我创建了一个使用MVC3,EF4 w/DbContext和ASP.Net Membership Provider的测试站点。一切都很顺利。然后,我决定从单元测试开始深入并学习测试。VS VS VS VS 11中的MVC测试

2周敲我的头靠在我的键盘之后,我现在觉得沮丧均可。我已经经历了大量的视频教程(TekPub,复数视域),在线教程(ASP.Net,Microsoft等..等等)和大量的StackOverflow问题/答案。我现在排序的(哈哈!)了解松耦合,依赖注入,Respositories,接口,存根,嘲笑(是的,我读了福勒的文章很多次),垫片,lambda表达式,重构......这样的例子不胜枚举和(...上)。我已经看过Ninject,Structuremap,Moq,TypeMock,JustMock,nUnit,xUnit等等......

所以我知道有很多方法去皮肤这只猫。现在我看到VS11/MVC4出来了,他们有这个叫做Fakes的东西,它似乎是静态方法(比如Membership)的一个很好的选择。

我的问题:

我想测试我的MVC EF4 /的DbContext /会员申请。我的大部分页面都需要经过身份验证的用户[授权],在我开始测试实际的方法之前,我的页面都需要[授权]。

如果你刚刚起步的(比如我),什么是测试我的CRUD应用程序最简单,最简单的途径?我不一定喜欢在生产环境中运行DI框架(只是另一件可能会出错的东西),并且我发现当所有东西都出去时,压裂的东西都很混乱。

我可以升级到VS11/MVC4并尝试使用Fakes方法。似乎稍微简单一些,但仍然看起来像我需要EF东西的所有Respository/Interfaces。

或者,你只是不干了,并使用像硒的集成测试工具(这是我曾与基于表单开发之前使用)?

任何建议,非常感谢。对不起,如果这是一个糟糕的问题,但我希望在这里的光线...

回答

0

对于所有版本的mvc或程序它几乎相同的测试方式。

你应该拥有基于接口的大部分逻辑。这将允许你分开关注点和单元测试任何你需要的东西,这也会给你假的假设(创建假实现)或模拟(在运行时创建类,它将表示你想要的逻辑,使用Mock或Rhino模拟)逻辑。

你可以阅读更多关于基本单元测试在这里:

http://msdn.microsoft.com/en-us/magazine/dd942838.aspx

此外,我会建议你对本书,史蒂芬·桑德森有包括大部分的单元测试示例应用程序看看。

http://www.amazon.co.uk/Pro-ASP-NET-MVC-Framework-ebook/dp/B005PZ07US

在这里你介绍起订量 http://www.codeproject.com/Tips/182847/An-Introduction-to-MOQ

你有替代如犀牛模拟:

http://ayende.com/blog

和一些例子: http://daysincode.blogspot.com/2012/06/examples-of-mocking-with-rhino-moq.html

当然这里的一切都会导致:http://msdn.microsoft.com/en-us/magazine/ekstremalna-przerobka-asp-net--czesc6-podzial-obowiazkow.aspx