0

我在想,在为应用程序编写一些单元测试以将直观的方法构建到我的类中时,这些方法会根据调用该方法的“类”而有所不同。

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

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

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

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

delegate<Test> { AuthenticateSimulate(customer); }

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

4

1 回答 1

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

于 2012-01-04T08:20:41.890 回答