Visual Studio 2010 parece estar mezclando las bibliotecas mencionadas anteriormente.¿Por qué Visual Studio 2010 mezcla System.Web And System.Web.Abstractions?
Este ejemplo de código procede del libro "Pro ASP.NET MVC2 Framework" de Steven Sanderson.
[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);
}
Mi proyecto hace referencia a las bibliotecas System.Web y System.Web.Abstractions.
Cuando el archivo de código es único "using System.Web" Tengo dos errores:
- (Línea 25 bajo la palabra 'Assert') El tipo 'System.Web.HttpResponseBase' se define en una ensamblado que no está referenciado. Debe agregar una referencia al ensamblado 'System.Web.Abstractions, Version = 3.5.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'.
- (líneas 25 y 26 debajo de la palabra 'Cookies') 'System.Web.HttpResponseBase' no contiene una definición para 'Cookies' y ningún método de extensión 'Cookies' que acepta un primer argumento de tipo 'System.Web.HttpResponseBase 'podría encontrarse (¿falta una directiva using o una referencia de ensamblado?)
Si agrego "using System.Web.Abstractions" al archivo de código y construyo el proyecto, los errores anteriores desaparecen pero luego entonces recibo el siguiente error:
- El tipo o el nombre del espacio de nombres 'Abstracciones' no existe en el espacio de nombres 'System.Web' (¿falta un ensamblaje? referencia?)
Curiosamente, en ambos casos cuando coloco un punto después de la respuesta, Intellisense me indica las opciones correctas (es decir, Response.Cookies). Parece que Intellisense tiene información sobre HttpResponseBase que el motor de compilación no tiene.
¿Alguna idea de qué puede estar causando esto?
Era una referencia perdida. Estaba viendo la referencia System.Web.Abstractions en mi proyecto WebUI en lugar del proyecto UnitTests. Gracias. El comportamiento sigue siendo algo extraño. – Jason
Dulce. Gracias ! –