при модульном тестировании контроллера asp.net где вы издеваетесь над httprequestbase? - PullRequest
2 голосов
/ 21 декабря 2009

при модульном тестировании контроллера asp.net, вам не нужно каким-то образом издеваться над httpcontextbase?

Все мои контроллеры наследуются от написанного мной пользовательского класса контроллеров (он просто добавляет некоторые общие свойства к исходному классу контроллеров). Так что это как:

public class MyController : Controller
{
    protected override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext context)
    {
         // look for a specific cookie
    }

}

так что очень хочу начать модульное тестирование моих контроллеров, просто не знаю, как я буду насмехаться над классами контроллеров и httpcontext, который идет с ним.

1 Ответ

2 голосов
/ 21 декабря 2009

Вот пример того, как вы можете использовать Moq для настройки Mock HttpContextBase:

var httpCtxStub = new Mock<HttpContextBase>();

var controllerCtx = new ControllerContext();
controllerCtx.HttpContext = httpCtxStub.Object;

sut.ControllerContext = controllerCtx;

// Exercise and verify the sut

, где sut представляет тестируемую систему (SUT), т.е. контроллер, который вы хотите протестировать.

...