ASP / NET MVC:测试控制器瓦特/会话?嘲讽? [英] ASP/NET MVC: Test Controllers w/Sessions? Mocking?

查看:121
本文介绍了ASP / NET MVC:测试控制器瓦特/会话?嘲讽?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我读了一些关于这里的答案回复:测试视图和控制器,和嘲讽,但我仍然无法弄清楚如何测试一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆