Мы используем MVC3, для наших модульных тестов мы используем RhinoMocks в наших модульных тестах.Когда запрос начинается, мы проверяем домен, с которого он поступил, и сопоставляем его с клиентом.Этот клиент хранится в HttpContext.Items.Большинству контроллеров эта информация нужна для их работы.
var mocks = new MockRepository();
using (var controller = new TestController())
{
HttpContext context =
MockRepository.GenerateStub<HttpContext>();
Customer customer = new Customer { Key = "testKey" };
context.Items["Customer"] = customer;
controller.ControllerContext =
new ControllerContext {
Controller = controller,
RequestContext =
new RequestContext(
new HttpContextWrapper(context),
new RouteData()
)
};
...
В этом примере кода показано, в основном, что необходимо, однако заглушка недопустима, поскольку HttpContext является «запечатанным» классом.Контроллер принимает HttpContextBase (насмешка над этим много), но он не предоставляет свойство Items.
Мысли никому?Или даже лучше решение; -)