Como faço para simular o contexto do controlador no meu teste de unidade para que minha visão parcial da função de string funcione?

Estou tentando criar um teste de unidade para o meu controlador, mas a ação que estou testando usa uma visão parcial da função de string que não deseja funcionar nos meus testes.

private string RenderPartialViewToString(string viewName, object model = null)
{
   if (string.IsNullOrEmpty(viewName))
            viewName = ControllerContext.RouteData.GetRequiredString("action");

   ViewData.Model = model;

   using (System.IO.StringWriter sw = new System.IO.StringWriter())
   {
      ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
      ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
      viewResult.View.Render(viewContext, sw);

      return sw.GetStringBuilder().ToString();
   }
}

Isso me dá um erro de "Referência de objeto não definida para uma instância de um objeto" na linhaViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);

Minha configuração no teste de unidade do controlador é (com alguns bits removidos para simplificá-lo):

var mock = new Mock<ControllerContext>();
mock.SetupGet(p => p.HttpContext.User.Identity.Name).Returns(userName);
if (userName != null)
{
   mock.SetupGet(p => p.HttpContext.Request.IsAuthenticated).Returns(true);
   mock.SetupGet(p => p.HttpContext.User.Identity.IsAuthenticated).Returns(true);
}
else
{
   mock.SetupGet(p => p.HttpContext.Request.IsAuthenticated).Returns(false);
}
var controller = new BlogController();
controller.ControllerContext = mock.Object;

Não tive sorte tentando encontrar uma solução ou contornar. Qualquer ajuda apreciada. Obrigado.

Conforme sugerido, tentei configurar os dados da rota, mas ainda assim obtendo o erro. Isto é o que eu adicionei:

var routeData = new RouteData();
routeData.Values.Add("controller", "BlogController");
mock.SetupGet(m => m.RouteData).Returns(routeData);

questionAnswers(2)

yourAnswerToTheQuestion