2013-02-20 57 views
2

我不能测试任何注销,登录,从新的Microsoft Fake框架AccountController注册操作,而没有此错误消息:System.Security.VerificationException:操作可能会破坏运行时。单元测试WebMatrix.WebData与微软虚假框架MVC4

单元测试是真实简单:

[TestMethod] 
    public void LogOff() 
    { 
     var AccountController = new AccountController(); 
     RedirectToRouteResult RedirectToRouteResult; 

     //Scope the detours we're creating 
     using (ShimsContext.Create()) 
     { 
      ShimWebSecurity.Logout =() => { }; 
      var test = AccountController.LogOff(); 
      RedirectToRouteResult = AccountController.LogOff() as RedirectToRouteResult; 
     } 

     Assert.IsNotNull(RedirectToRouteResult); 
     Assert.AreEqual("Index", RedirectToRouteResult.RouteValues["Action"]); 
     Assert.AreEqual("Home", RedirectToRouteResult.RouteValues["controller"]); 
    } 

也觉得这样的:http://social.msdn.microsoft.com/Forums/en-US/vsunittest/thread/f84962ea-a9b2-4e0d-873b-e3cf8cfb37e2是谈论同样的错误,但无人接听。

谢谢!

回答

1

我在VS2012 Update 1发布之前问过同样的问题(VerificationException when instantiating MVC controller during unit testing),我收到了一位来自微软的人的回复,他说他们正在开发它,并且应该在下一次更新中提供。那么从那以后什么都没有。但是,为了获得结果并继续使用Microsoft Fakes Framework进行测试,我用类似于UrlHelper类的MVC方法调用了我自己的私有方法,该方法返回基本类型,如string,然后将单位测试给我一个理想的结果。这样我从来没有打电话给底层的MVC基础设施,我得到了预期的结果。此外,您将需要删除System.Web.Mvc.Fakes引用,否则VerificationException将不断弹出。

如果你觉得这个乏味,那么你应该切换到更成熟的单元测试框架,如Moq或Rhino。

+0

更新2,同样的错误。微软破坏我的运行时间 – felickz 2013-03-14 14:23:35

+0

@felickz我刚刚测试更新2,它工作正常。我几天前安装了更新2,并认为我可能会给它一个镜头。没有VerificationExceptions。 – 2013-04-08 17:12:52

+0

疯了我没有更新2安装在我使用的机器上。太多的开发机器:) – felickz 2013-05-22 13:45:22