Nous venons de commencer à utiliser ASP.Net MVC Release Candidate et le projet de test que nous avons testait précédemment les requêtes Ajax avec MVC beta.
L'ancien code ressemblait à quelque chose comme ceci :
Mock<HttpRequestBase> request = new Mock<HttpRequestBase>();
Mock<HttpResponseBase> response = new Mock<HttpResponseBase>();
Mock<HttpContextBase> context = new Mock<HttpContextBase>();
context.Expect(c => c.Request).Returns(request.Object);
context.Expect(c => c.Response).Returns(response.Object);
request.Expect(req => req["__MVCASYNCPOST"]).Returns("true");
MyController controller = new MyController();
controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);
ViewResult result = controller.UpdateStatus() as ViewResult;
L'appel à UpdateStatus utilise alors la méthode IsMvcAjaxRequest() sur l'objet de requête pour déterminer ce qu'il faut renvoyer au navigateur.
Dans ASP.Net MVC Release Candidate, la modification de Request.IsMvcAjaxRequest() en une méthode d'extension de Request.IsAjaxRequest() signifie que la façon dont nous simulons les en-têtes de requête est modifiée :
request.Expect(req => req["X-Requested-With"]).Returns("XMLHttpRequest");
J'espère que d'autres trouveront cela utile