我正在使用Steve Sanderson 精彩的MVC 集成测试框架的改编版本。
如果我在我的应用程序中获取任何视图并通过这个框架(它基本上创建一个“假”工作请求HttpRuntime.ProcessRequest()
)来提供它,我可以在我的集成测试上下文中将它托管在 ASP.NET 运行时中。
我的问题是为什么从这个过程中得到的任何观点HomeController
都会很好地通过这个过程,但任何其他控制器都会给出回应
路径“获取”被禁止
我可以将任何视图移动到 HomeController 并毫无问题地对其进行测试。我看不出两个调用之间的工作人员请求假的区别(url 不能承受)。我很茫然!
测试输出中的堆栈跟踪:
ContentControllerTwitterReturnsTheTwitterView : FailedSystem.NullReferenceException : 对象引用未设置为对象的实例。
服务器堆栈跟踪:位于 AppDomainProxy.cs 中 MvcIntegrationTestFramework.Hosting.AppDomainProxy.RunBrowsingSessionInAppDomain(SerializableDelegate`1 脚本)的 website.tests.ContentControllerTwitterTests.b__0(BrowsingSession session):System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage( IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
在 [0] 处重新抛出异常:在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(ref MessageData msgData, Int32 type) 在 MvcIntegrationTestFramework.Hosting 的 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) AppHost.cs 中的 .AppDomainProxy.RunBrowsingSessionInAppDomain(SerializableDelegate
1 script) at MvcIntegrationTestFramework.Hosting.AppHost.Start(Action
1 testScript):website.tests.ContentControllerTwitterTests.ContentControllerTwitterReturnsTheTwitterView() 中的第 34 行 HomeControllerTwitterTests.cs:第 25 行