MVC使用嘲讽框架(Moq)测试
问题描述:
我正在使用Moq来帮助测试我的ASP.NET MVC2应用程序。MVC使用嘲讽框架(Moq)测试
问题:ArgumentException未被用户代码处理。无法获取StrongNameKeyPair的公共密钥
此代码已从Scott Hanselman的NerdDinner1改编而来。
HomeController CreateHomeControllerAs(string userName)
{
var mock = new Mock<ControllerContext>();
mock.SetupGet(p => p.HttpContext.User.Identity.Name).Returns(userName); // fails here
mock.SetupGet(p => p.HttpContext.Request.IsAuthenticated).Returns(true);
var controller = new HomeController();
controller.ControllerContext = mock.Object;
return controller;
}
[TestMethod]
public void should_be_able_to_get_to_index_page_logged_in()
{
HomeController controller = CreateHomeControllerAs("dave");
}
使用Moq引用... VS2010在WinXP下。
答
你的代码没有问题。我刚刚测试过,它运行良好。问题出在Moq
组件上。您需要授予对C:\Documents and Settings\AllUsers\ApplicationData\Microsoft\Crypto\RSA\MachineKeys
文件夹的特定权限。结帐this discussion。
在Windows资源管理器中右键单击Moq.dll
,并在属性中确保它未被锁定。当您从Internet上下载某个DLL时,Windows会自动对其应用受限制的权限。
真棒..我也写了一篇博客文章http://www.programgood.net/2010/07/05/ArgumentExceptionWasUnhandledByUserCodeUnableToObtainPublicKeyForStrongNameKeyPair.aspx – 2010-07-05 20:55:12