Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 ASP.NET MVC MOQ-修改公共操作结果登录以包括会话对象-单元测试失败_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 ASP.NET MVC MOQ-修改公共操作结果登录以包括会话对象-单元测试失败

Asp.net mvc 3 ASP.NET MVC MOQ-修改公共操作结果登录以包括会话对象-单元测试失败,asp.net-mvc-3,Asp.net Mvc 3,我对单元测试和MOQ等非常陌生。我已经修改了public ActionResultLogOn(LogOnModel模型)Action以包含Session[“UserFullName”],用于日志记录 不幸的是,单元测试失败,没有为会话[“UserFullName”]设置对象引用 谁能告诉我如何通过修改单元测试上的GetAccountController()方法,使用MOQ解决这个问题 注意。HttpSessionStateBase通过HttpContextBase提供。您可以通过Controll

我对单元测试和MOQ等非常陌生。我已经修改了public ActionResult
LogOn(LogOnModel模型)
Action以包含
Session[“UserFullName”]
,用于日志记录

不幸的是,单元测试失败,没有为
会话[“UserFullName”]
设置对象引用

谁能告诉我如何通过修改单元测试上的
GetAccountController()
方法,使用MOQ解决这个问题


注意。

HttpSessionStateBase通过HttpContextBase提供。您可以通过ControllerContext设置HttpContextBase。这就是我使用Rhinomock的方式

 var httpContext = MockRepository.GenerateMock<HttpContextBase>();
 var session = MockRepository.GenerateMock<HttpSessionStateBase>();

 httpContext.Expect( c => c.Session ).Return( session ).Repeat.AtLeastOnce();
 session.Expect( s => s["UserFullName"] ).Return( "John Q. User" );

 var controller = GetAccountController();
 controller.ControllerContext = new ControllerContext( httpContext, new RouteData(), controller );

 ...
var httpContext=MockRepository.GenerateMock();
var session=MockRepository.GenerateMock();
Expect(c=>c.Session).Return(Session.Repeat.atlestOnce();
Expect(s=>s[“UserFullName]”)。Return(“johnq.User”);
var controller=GetAccountController();
controller.ControllerContext=新的ControllerContext(httpContext,new RoutedData(),controller);
...