Como evitar o HttpContext.Server.MapPath para fins de teste de unidade

Estou trabalhando em um aplicativo ASP.net MVC 5. Gostaria de testar a minha ação do controlador, que se parece com isso

public ActionResult Search()
{
  var vm = SetupSearchViewModel();

  return View(vm);
}

Todo o trabalho duro é feito peloSetupSearchViewModel() , que em si é um orquestrador que chama muitos outros métodos diferentes, um dos quais é esse

private string ExtractJsonFile(string filename)
{
  var filePath = HttpContext.Server.MapPath(filename);
  var json = System.IO.File.ReadAllText(filePath);
  return json;
}

Estou planejando fazer muitos testes de unidade nessa ação específica, mas estou começando com um teste de unidade muito simples que verifica se o tipo correto de ActionResult é retornado

[Test]
public void Search_Get_ReturnsViewResult()
{
  // arrange
  var performanceController = PerformanceControllerInstance;
  // act
  var result = performanceController.Search();
  //assert
  Assert.IsNotNull(result as ViewResult);
}

O teste está falhando devido aoExtractJsonFile método. UsaHttpContext e isso énull. Estou usando o Rhino Mocks para zombar das várias classes.

Qual seria a melhor maneira de fazer o teste de unidade? Darin emesta discussão sugerimos que evitemosHttpContext.Current se quisermos nosso código Unit Tested.

A propósito, tentei zombar do HttpContext e torná-lo não nulo, mas depois oServer énull, Posso ir em frente e zombar disso, suponho (ainda não sei), mas não há melhor maneira? Não tenho problema em refatorar grandes, se necessário.

questionAnswers(1)

yourAnswerToTheQuestion