Asp.net mvc 使用模拟框架(Moq)进行MVC测试
我正在使用Moq来帮助测试我的ASP.NET MVC2应用程序 问题:用户代码未处理ArgumentException。无法获取StrongNameKeyPair的公钥 此代码改编自Scott Hanselman的NerdDinner1Asp.net mvc 使用模拟框架(Moq)进行MVC测试,asp.net-mvc,unit-testing,asp.net-mvc-2,moq,Asp.net Mvc,Unit Testing,Asp.net Mvc 2,Moq,我正在使用Moq来帮助测试我的ASP.NET MVC2应用程序 问题:用户代码未处理ArgumentException。无法获取StrongNameKeyPair的公钥 此代码改编自Scott Hanselman的NerdDinner1 HomeController CreateHomeControllerAs(string userName) { var mock = new Mock<ControllerContext>(); mock.S
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");
}
HomeController创建HomeControlleras(字符串用户名)
{
var mock=new mock();
mock.SetupGet(p=>p.HttpContext.User.Identity.Name).Returns(userName);//此处失败
SetupGet(p=>p.HttpContext.Request.IsAuthenticated)。返回(true);
var controller=新的HomeController();
controller.ControllerContext=mock.Object;
返回控制器;
}
[测试方法]
public void应该能够获取索引页面登录()
{
HomeController=CreateHomeControllerAs(“dave”);
}
使用最小起订量引用。。。WinXP下的VS2010。您的代码没有问题。我刚刚测试过,效果很好。问题在于
Moq
组件。您需要向C:\Documents and Settings\AllUsers\ApplicationData\Microsoft\Crypto\RSA\MachineKeys
文件夹授予特定权限。结帐
另外,在Windows资源管理器中右键单击
Moq.dll
,并在属性中确保它未被锁定。从internet下载某些DLL时,Windows会自动对其应用受限权限。Awesome。。我也写了一篇关于这个的博客文章