ASP.Net MVC çerçevesini kullanarak C # bir denetleyicisi var
public class HomeController:Controller{
public ActionResult Index()
{
if (Request.IsAjaxRequest())
{
//do some ajaxy stuff
}
return View("Index");
}
}
Alay ile ilgili bazı ipuçları var ve aşağıdaki ve RhinoMocks ile kodu test etmek umuyordum
var mocks = new MockRepository();
var mockedhttpContext = mocks.DynamicMock<HttpContextBase>();
var mockedHttpRequest = mocks.DynamicMock<HttpRequestBase>();
SetupResult.For(mockedhttpContext.Request).Return(mockedHttpRequest);
var controller = new HomeController();
controller.ControllerContext = new ControllerContext(mockedhttpContext, new RouteData(), controller);
var result = controller.Index() as ViewResult;
Assert.AreEqual("About", result.ViewName);
Ancak bu hatayı almaya devam:
Özel Durum System.ArgumentNullException: System.ArgumentNullException: Değer boş olamaz. Parametre adı: System.Web.Mvc.AjaxRequestExtensions.IsAjaxRequest adresindeki istek (HttpRequestBase isteği)
Yana Request
denetleyicisinde nesnenin bir ayarlayıcı sahiptir. Aşağıdaki testten önerilen kodu kullanarak bu testi düzgün bir şekilde çalışmaya çalıştım.
Bu, RhinoMocks yerine Moq kullandı ve Moq kullanırken aynı test için aşağıdakileri kullanıyorum:
var request = new Mock<HttpRequestBase>();
// Not working - IsAjaxRequest() is static extension method and cannot be mocked
// request.Setup(x => x.IsAjaxRequest()).Returns(true /* or false */);
// use this
request.SetupGet(x => x.Headers["X-Requested-With"]).Returns("XMLHttpRequest");
var context = new Mock<HttpContextBase>();
context.SetupGet(x => x.Request).Returns(request.Object);
var controller = new HomeController(Repository, LoginInfoProvider);
controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);
var result = controller.Index() as ViewResult;
Assert.AreEqual("About", result.ViewName);
ancak aşağıdaki hatayı alın:
Özel Durum System.ArgumentException: System.ArgumentException: Geçersiz kılınamayan bir üye için geçersiz kurulum: x => x.Headers ["X-Requested-With"], Moq.Mock.ThrowIfCantOverride (İfade kurulumu, MethodInfo methodInfo)
Yine, istek başlığını ayarlayamıyorum gibi görünüyor. RhinoMocks veya Moq'da bu değeri nasıl ayarlarım?