【问题标题】:Having problems with an ASP.NET MVC unit test & HttpContext.Current.CacheASP.NET MVC 单元测试和 HttpContext.Current.Cache 出现问题
【发布时间】:2010-03-22 21:48:52
【问题描述】:

这是我的控制器代码的第一部分:

public class ControlMController : Controller
    {
        IControlMService _controlMservice;

        public IList<User> Users
        {
            get
            {
                if (System.Web.HttpContext.Current.Cache["users"] == null)
                {

                    System.Web.HttpContext.Current.Cache["users"] = _controlMservice.GetUsers();
                }
                return (IList<User>)System.Web.HttpContext.Current.Cache["users"];
            }
        }

        public ControlMController(IControlMService controlMservice)
        {
            this._controlMservice = controlMservice;
            var users = Users;
            ViewData["Users"] = users;
            ViewData["jqSelectUsers"] = string.Join(";", users.Select(x => x.UserID + ":" + x.Name).ToArray());
        }

我正在尝试对其进行测试,并且因为我正在使用 HttpContext 进行缓存,所以我正在努力处理空引用异常。我试过using MvcContrib.TestHelper; 这是我的示例测试...

    [TestMethod]
    public void EventDetails_Returns_view_with_correct_event()
    {
        var builder = new TestControllerBuilder();
        var controller = builder.CreateController<ControlMController>(
                                     new ControlMService(
                                           new MockControlMRepository()
                                                         ));
        var view = (controller.EventDetails(1) as ViewResult);
        Assert.AreEqual(1, (view.ViewData.Model as Event).EventId);
    }

(我还没有完全使用 DI 进行测试!)

当代码点击 httpcontext 时,我仍然得到相同的空引用异常:

Error   1   TestCase 'SupportTool.Tests.Services.ControlM.ControlMControllerTests.EventDetails_Returns_view_with_correct_event'
failed: System.NullReferenceException: Object reference not set to an instance of an object.
   at SupportTool.web.Controllers.ControlMController.get_Users()

有什么想法吗?

【问题讨论】:

    标签: c# asp.net asp.net-mvc mvccontrib


    【解决方案1】:

    我认为 HttpRuntime.Cache 在您的测试运行时不会为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 2011-02-23
      • 1970-01-01
      • 2011-08-22
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多