我必须模拟控制器上下文,以便测试一些授权的方法。问题是虽然我尝试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;