this问题导致问题出现。我做了以下事情:
我通过安装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.Object;
我的测试项目中没有使用System.Web.Http.Controllers.HttpControllerContext;
的任何想法。
答案 0 :(得分:0)
您使用的是错误的包和错误的命名空间。
在我看来,你需要模拟System.Web.Http.Controllers.ControllerContext
,但是你提供的是System.Web.Mvc.ControllerContext
的模拟实例,它是不 Web API类,而是ASP。 NET MVC一个。
怎么做:
确保已将 Web Api 软件包安装到单元测试项目中:
Install-Package Microsoft.AspNet.WebApi
从单元测试项目中删除 MVC程序集的任何引用(当然,只有在您不需要测试MVC组件时才这样做)
确保在Unit Test类中导入正确的命名空间(而不是MVC):
using System.Web.Http.Controllers;
请注意,即使类名相同,MVC组件和Web API组件不也可以互换。始终确认您在项目中使用了正确的。