1

Я новичок в MVCContrib Testhelper и насмехается над Rhino.MVCContrib TestHelper и User.Identity.Name, Server.MapPath и сборка форм

Мне нужна помощь с модулем тестирования контроллера, который полагается на User.Identity.Name, Server.MapPath и Form Collection.

Я начал с

var controller = new SubmitController(); 
var builder = new TestControllerBuilder(); 
builder.InitializeController(controller); 

Я нашел this post для установки Пользователь.Идентичность.Имя

controller.ControllerContext = TestHelper.MockControllerContext(controller).WithAuthenticatedUser("domain\\username"); 

На данный момент в моем контроллере я могу теперь добраться до User.Identity , Тогда возникла проблема с тем, как установить переменные коллекции форм. Установка

builder.Form.Add("testvar","1"); 

не работает. Казалось, что теперь я должен был получить доступ через

controller.HttpContext.Request.Form.Add("testvar","1) 

Это, казалось, работать, но на данный момент, я уже не используя конструктор (TestControllerBuilder) выше.

Мне тогда пришлось издеваться над сервером, который поднял больше проблем. Как я могу продолжать использовать конструктор, но использовать издевается или заглушки для HttpContext, HttpRequest, сервер и т.д. Я был своего родом ожидал, что строитель будет иметь методы для установки ожидаемых значений для HttpRequest, сервер и т.д.

Благодаря

ответ

5

Когда вы заменили контроллер ControllerContext, который удалил контекст MVCContrib. Попробуйте примерно следующее:

using MvcContrib.TestHelper; 
using MvcContrib.TestHelper.Fakes; 
using Rhino.Mocks; 

... 
var builder = new TestControllerBuilder(); 
builder.Form.Add("testvar", "1"); 
builder.HttpContext.User = new FakePrincipal(new FakeIdentity("UserName"), new string[] { "Role" }); 
builder.HttpContext.Server.Stub(x => x.MapPath(Arg<string>.Is.Anything)).Return("Value"); 
builder.InitializeController(controller);