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会自动对其应用受限制的权限。

+0

真棒..我也写了一篇博客文章http://www.programgood.net/2010/07/05/ArgumentExceptionWasUnhandledByUserCodeUnableToObtainPublicKeyForStrongNameKeyPair.aspx – 2010-07-05 20:55:12