HttpContext is read-only, but it is actually derived from the ControllerContext, which you can set.

controller.ControllerContext = new ControllerContext( context.Object, new RouteData(), controller );