我在考虑为应用程序编写一些单元测试,以便在我的类中构建直观的方法,这取决于哪个“类”称为方法。
所以,我在一个NUnit类中,需要测试是否为经过身份验证的用户成功创建了FormsAuthenticationTicket
:
Assert.DoesNotThrow(typeof(Application.AuthenticationFailure),
delegate { Code.Authenticate(); }
我遇到的问题是HttpContext在单元测试中无效。找到了几个解决方案,但就像Phil Haack用他的HttpSimulator做的那样。这不能直接在我的单元测试代码中工作,因为我正在模拟EF类(不推荐我知道),模拟器会影响连接字符串。
更好的选择是将数据调用移出单元测试,但我正在学习过程中的匿名方法,并希望做类似的事情:
delegate<Test> { AuthenticateSimulate(customer); }
在3.5中有没有一个不错的选择来做这样的事情?
答案 0 :(得分:1)
也许尝试像RhinoMocks,Moq或TypeMock Isolator这样的模拟对象框架,或像Microsoft Moles这样的隔离框架。
http://research.microsoft.com/en-us/projects/moles/
“用你自己的代表替换任何.NET方法!”
“Moles是.NET中基于委托的测试存根和绕行的轻量级框架.Moles可用于绕过任何.NET方法,包括密封类型中的非虚拟/静态方法。”
以Mvc为例:
http://mvccontrib.codeplex.com/wikipage?title=TestHelper&referringTitle=Documentation