此代码示例来自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”时,我得到两个错误:
>(‘Assert’一词下的第25行)’System.Web.HttpResponseBase’类型在未引用的程序集中定义.您必须添加对程序集’System.Web.Abstractions,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35’的引用.
>(第25行和第26行,单词’Cookies’)’System.Web.HttpResponseBase’不包含’Cookies’的定义,也没有扩展方法’Cookies’接受’System.Web.HttpResponseBase’类型的第一个参数可以找到(你错过了使用指令或程序集引用吗?)
如果我将“使用System.Web.Abstractions”添加到代码文件并构建项目,上面的错误消失但后来我收到以下错误:
>名称空间’System.Web’中不存在类型或命名空间名称’Abstractions'(您是否缺少程序集引用?)
有趣的是,在两种情况下,当我在Response之后放置一个点时,Intellisense会提示我正确的选择(即Response.Cookies).似乎Intellisense有关于HttpResponseBase的信息,而构建引擎却没有.
知道可能导致这种情况的原因吗?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。