ASP / NET MVC:测试控制器瓦特/会话?嘲讽? [英] ASP/NET MVC: Test Controllers w/Sessions? Mocking?
问题描述
我读了一些关于这里的答案回复:测试视图和控制器,和嘲讽,但我仍然无法弄清楚如何测试一个ASP.NET MVC控制器读取和设置会话值(或任何其他基于上下文变量)。
我如何为我的测试方法(会话)范围内?嘲笑的答案吗?任何人有例子吗?
基本上,我想假一会话之前我所说的控制器方法,并有控制器使用的会话。任何想法?
I read some of the answers on here re: testing views and controllers, and mocking, but I still can't figure out how to test an ASP.NET MVC controller that reads and sets Session values (or any other context based variables.) How do I provide a (Session) context for my test methods? Is mocking the answer? Anybody have examples? Basically, I'd like to fake a session before I call the controller method and have the controller use that session. Any ideas?
推荐答案
看看斯蒂芬·瓦尔特的岗位上伪装的控制器上下文:
Check out Stephen Walther's post on Faking the Controller Context:
<一个href=\"http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx\">ASP.NET MVC提示#12 - 伪造的控制器上下文
[TestMethod]
public void TestSessionState()
{
// Create controller
var controller = new HomeController();
// Create fake Controller Context
var sessionItems = new SessionStateItemCollection();
sessionItems["item1"] = "wow!";
controller.ControllerContext = new FakeControllerContext(controller, sessionItems);
var result = controller.TestSession() as ViewResult;
// Assert
Assert.AreEqual("wow!", result.ViewData["item1"]);
// Assert
Assert.AreEqual("cool!", controller.HttpContext.Session["item2"]);
}
这篇关于ASP / NET MVC:测试控制器瓦特/会话?嘲讽?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!