模拟cotroller上下文asp 4.5

时间:2016-05-25 09:21:33

标签: c# unit-testing model-view-controller asp.net-web-api moq

我必须模拟控制器上下文,以便测试一些授权的方法。问题是虽然我尝试this但它不起作用,因为当我输入:

var mock = new Mock<ControllerContext>();

Visual Studio强调ControllerContext并说明

  

无法找到类型或命名空间

这些是我在单元测试类中包含的用法:     使用Microsoft.VisualStudio.TestTools.UnitTesting;

    using System;
    using System.Web;
    using System.Collections.Generic;
    using Moq;
    using System.Web.Http.Controllers;
    using Data.Contracts;
    using System.Linq;
    using Web.Api.Controllers;

有关如何在MSDN文档中包含ControllerContext的任何想法,他们说它是System.Web的一部分,但它似乎不起作用。如果有另一种方法来模拟上下文而不使用它,那将会很棒。

我通过安装Mvc包修复了引用。但是,当我尝试这个时,现在收到以下错误:

var mock = new Mock<ControllerContext>();
            mock.SetupGet(x => x.HttpContext.User.Identity.Name).Returns("SOMEUSER");
            mock.SetupGet(x => x.HttpContext.Request.IsAuthenticated).Returns(true);
            controller.ControllerContext = mock.Object; 

无法将System.Web.Mvc.ControllerContext转换为System.Web.Http.Controllers.ControllerContext

> controller.ControllerContext = mock.Objectt;

1 个答案:

答案 0 :(得分:1)

ControllerContex t是System.Web.MvcSystem.Web.Mvc.dll的一部分。只需添加对它的引用