ASP.Net MVC Release Candidate の使用を開始したばかりで、以前は MVC ベータ版で Ajax リクエストをテストしていたテスト プロジェクトを使用していました。
古いコードは次のようになります。
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;
UpdateStatus の呼び出しでは、要求オブジェクトで IsMvcAjaxRequest() メソッドを使用して、ブラウザに何を返すかを決定します。
ASP.Net MVC Release Candidate の Request.IsMvcAjaxRequest() から Request.IsAjaxRequest() の拡張メソッドへの変更は、リクエスト ヘッダーをモックする方法が次のように変更されることを意味します。
request.Expect(req => req["X-Requested-With"]).Returns("XMLHttpRequest");
他の人がこれが役立つことを願っています