Visual Studio 2010似乎混合了上面提到的庫。爲什麼Visual Studio 2010會混合使用System.Web和System.Web.Abstractions?
此代碼示例來自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」的引用。
- (第25行和第26行在「Cookies」一詞下)'System.Web.HttpResponseBase'不包含'Cookies'的定義,也沒有接受類型爲「System.Web.HttpResponseBase」的第一個參數的擴展方法'Cookies' '可以找到(你是否錯過使用指令或程序集引用?)
如果我添加「使用System.Web.Abstractions」到代碼文件並生成項目,上述錯誤消失,但隨後那麼我得到以下錯誤:
- 命名空間'System.Web'中不存在類型或名稱空間名稱'Abstractions'(您是否缺少程序集參考?)
有趣的是,在這兩種情況下,當我在Response之後放置一個點時,Intellisense會提示我提供正確的選擇。 Response.Cookies)。看起來Intellisense有關於HttpResponseBase的信息,即構建引擎沒有。
任何想法可能會導致此?
這是一個錯過的參考。我正在查看WebUI項目中的System.Web.Abstractions參考,而不是UnitTests項目。謝謝。這種行爲仍然有點奇怪。 – Jason 2010-09-30 21:53:43
甜。謝謝 ! – 2012-01-10 19:17:49