委托单元测试的方法

时间:2011-12-13 09:03:21

标签: unit-testing anonymous-methods nunit-2.5

我在考虑为应用程序编写一些单元测试,以便在我的类中构建直观的方法,这取决于哪个“类”称为方法。

所以,我在一个NUnit类中,需要测试是否为经过身份验证的用户成功创建了FormsAuthenticationTicket

Assert.DoesNotThrow(typeof(Application.AuthenticationFailure), 
   delegate { Code.Authenticate(); }

我遇到的问题是HttpContext在单元测试中无效。找到了几个解决方案,但就像Phil Haack用他的HttpSimulator做的那样。这不能直接在我的单元测试代码中工作,因为我正在模拟EF类(不推荐我知道),模拟器会影响连接字符串。

更好的选择是将数据调用移出单元测试,但我正在学习过程中的匿名方法,并希望做类似的事情:

delegate<Test> { AuthenticateSimulate(customer); }

在3.5中有没有一个不错的选择来做这样的事情?

1 个答案:

答案 0 :(得分:1)

也许尝试像RhinoMocks,Moq或TypeMock Isolator这样的模拟对象框架,或像Microsoft Moles这样的隔离框架。

http://research.microsoft.com/en-us/projects/moles/
“用你自己的代表替换任何.NET方法!”
“Moles是.NET中基于委托的测试存根和绕行的轻量级框架.Moles可用于绕过任何.NET方法,包括密封类型中的非虚拟/静态方法。”

修改
另见:
http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx

以Mvc为例:
http://mvccontrib.codeplex.com/wikipage?title=TestHelper&referringTitle=Documentation