模拟控制器上下文 asp 4.5

Mocking a cotroller context asp 4.5

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

var mock = new Mock<ControllerContext>();

Visual Studio 下划线 ControllerContext 表示

The type or namespace could not be found

这些是我在单元测试中包含的用法 class: 使用 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;

ControllerContext 是 System.Web.Mvc.dllSystem.Web.Mvc 的一部分。只需添加对它的引用