Пересмешная Querystring-RhinoMocks-MVC3 - PullRequest
3 голосов
/ 17 августа 2011

У меня есть ситуация с Mock Querystring. Кто-нибудь издевался над Querystring с RhinoMocks, если так, пожалуйста, дайте мне знать. Я использую MVC 3.

Спасибо

Ответы [ 2 ]

4 голосов
/ 18 октября 2011

Я нашел решение на основе http://dylanbeattie.blogspot.com/2008/12/mocking-querystring-collection-in.html, но с использованием RhinoMocks

HttpContextBase httpContextBase;     
HttpRequestBase httpRequestBase;
ControllerBase controllerBase;

controllerBase = mockRepository.DynamicMock<ControllerBase>();

NameValueCollection nvc = new NameValueCollection();
nvc.Add("KEY", "VALUE");

httpRequestBase  =  mockRepository.DynamicMock<HttpRequestBase>();
Expect.Call(httpRequestBase.QueryString).Return(nvc);

httpContextBase = mockRepository.DynamicMock<HttpContextBase>();
Expect.Call(httpContextBase.Request).Return(httpRequestBase);

var context = new ControllerContext(httpContextBase, new RouteData(), controllerBase);

yourController.ControllerContext = context;
1 голос
/ 27 марта 2013

Хотя вы и просили RhinoMocks, я нашел это решение и адаптировал его для Moq.Так что для всех, кто заинтересован, вот Moq-версия ответа @ TomAx:

        NameValueCollection queryString = new NameValueCollection();
        queryString.Add("KEY", "VALUE");

        // Set up a request
        var request = new Mock<HttpRequestBase>();
        request.Setup(r => r.QueryString).Returns(queryString);

        // Inject into the controller
        var controllerBase = new Mock<ControllerBase>();
        var contextBase = new Mock<HttpContextBase>();
        contextBase.Setup(c => c.Request).Returns(request.Object);

        request.Setup(r => r.QueryString).Returns(queryString);
        var controllerContext = new ControllerContext(contextBase.Object, new RouteData(), controllerBase.Object);
        var controller = new YourController();
        controller.ControllerContext = controllerContext;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...