Попытка заглушить Server.MapPath с помощью помощников MvcContrib Test и Rhino Mocks 3.5 - PullRequest
1 голос
/ 14 июля 2010

Я использую тестовые помощники MvcContrib и Rhino Mocks 3.5 для тестирования метода действия ASP.NET MVC.Я создаю свой поддельный контроллер следующим образом:

var _builder = new TestControllerBuilder();
_builder.InitializeController(_controller);

Итак, я получаю поддельный контроллер, содержащий поддельный HTTP-сервер и т. Д.

Затем я пытаюсь заглушить метод Server.MapPath следующим образом

controller.Server.Stub(x => x.MapPath(Arg<string>.Is.Anything)).Return("/APP_DATA/Files/");

, но в моем тестируемом методе вызов Server.MapPath ("/ APP_DATA / Files /") возвращает ноль.

Это тест

    const string STOCK_NUMBER_ID = "1";
    const string FULL_FILE_PATH = "App-Data/Files";

    var controller = CreateStockController();
    _uploadedFileTransformer.Stub(x => x.ImageBytes).Return(new byte[10]);
    _uploadedFileTransformer.Stub(x => x.ConvertFileToBytes(FULL_FILE_PATH)).Return(true);

    controller.Server.Stub(x => x.MapPath(Arg<string>.Is.Anything)).Return("/App_Data/Files/");

    controller.AddImage(Guid.NewGuid(), STOCK_NUMBER_ID);

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 06 декабря 2010

Старый пост, но я искал это, и я нашел решение, вероятно TestHelper MvcContrib исправил его, потому что для меня это работает.

_builder.HttpContext.Server.Stub(s => s.MapPath("~/" + filepath)).Repeat.Once().Return(mapedPath);
0 голосов
/ 15 июля 2010

Похоже, что это ошибка в MVCContrib (по крайней мере, с тем, что у меня на моей машине - v1.0.0.0).При настройке контекста контроллера он использует режим записи / воспроизведения Rhino.Mocks, но (и это ошибка) не переводит макет HttpServer в режим воспроизведения.Он переводит все остальное в режим воспроизведения, но не в этот.

Итак, быстрое решение:

controller.Server.Replay();

Как часть вашего раздела "аранжировка" вашего теста.Тогда все работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...