【发布时间】:2010-09-30 21:14:54
【问题描述】:
Visual Studio 2010 似乎混合了上述库。
此代码示例来自 Steven Sanderson 的“Pro ASP.NET MVC2 Framework”一书。
[TestMethod]
public void HomePage_Recognizes_New_Visitor_And_Sets_Cookie()
{
// Arrange: First prepare some mock context objects
var mockContext = new Mock<HttpContextBase>();
var mockRequest = new Mock<HttpRequestBase>();
var mockResponse = new Mock<HttpResponseBase>();
// The following lines define associations between the different mock objects
// (i.e. tells Moq what alue to use for tMockContext.Request)
mockContext.Setup(x=> x.Request).Returns(mockRequest.Object);
mockContext.Setup(x=> x.Response).Returns(mockResponse.Object);
mockRequest.Setup(x=> x.Cookies).Returns(new HttpCookieCollection());
mockResponse.Setup(x=> x.Cookies).Returns(new HttpCookieCollection());
var homeController = new HomeController();
var requestContext = new RequestContext(mockContext.Object, new RouteData());
homeController.ControllerContext = new ControllerContext(requestContext, homeController);
// Act
ViewResult viewResult = homeController.HomePage();
// Assert
Assert.AreEqual(String.Empty, viewResult.ViewName);
Assert.IsTrue((bool)viewResult.ViewData["IsFirstVisit"]);
Assert.AreEqual(1, homeController.Response.Cookies.Count);
Assert.AreEqual(bool.TrueString, homeController.Response.Cookies["HasVisitedBefore"].Value);
}
我的项目引用了 System.Web 和 System.Web.Abstractions 库。
当代码文件只是“使用 System.Web”时,我得到两个错误:
- (“断言”一词下的第 25 行)类型“System.Web.HttpResponseBase”在未引用的程序集中定义。您必须添加对程序集“System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的引用。
- (“Cookies”一词下的第 25 和 26 行)“System.Web.HttpResponseBase”不包含“Cookies”的定义,并且没有扩展方法“Cookies”接受“System.Web.HttpResponseBase”类型的第一个参数' 可以找到(您是否缺少 using 指令或程序集引用?)
如果我将“使用 System.Web.Abstractions”添加到代码文件并构建项目,上述错误就会消失,但随后会出现以下错误:
- 命名空间“System.Web”中不存在类型或命名空间名称“Abstractions”(您是否缺少程序集引用?)
有趣的是,在这两种情况下,当我在 Response 之后放置一个点时,Intellisense 都会提示我正确的选择(即 Response.Cookies)。似乎 Intellisense 具有构建引擎没有的有关 HttpResponseBase 的信息。
知道是什么原因造成的吗?
【问题讨论】:
标签: asp.net-mvc visual-studio-2010