ASP.net MVC 5 응용 프로그램에서 작업하고 있습니다. 내가 단위 시험이단위 테스트 목적으로 HttpContext.Server.MapPath를 피하는 방법
public ActionResult Search()
{
var vm = SetupSearchViewModel();
return View(vm);
}
모든 노력 자체가이
중 하나는 여러 가지 다른 방법을 호출 지휘자, 인SetupSearchViewModel()
방법에 의해 이루어집니다처럼 보이는 내 컨트롤러 액션을 싶습니다
private string ExtractJsonFile(string filename)
{
var filePath = HttpContext.Server.MapPath(filename);
var json = System.IO.File.ReadAllText(filePath);
return json;
}
나는이 특정 작업에 많은 단위 테스트를 할 계획,하지만 난 ActionResult의 올바른 유형이 반환되는 것을 확인하는 아주 간단한 단위 테스트와 함께 시작 해요
[Test]
public void Search_Get_ReturnsViewResult()
{
// arrange
var performanceController = PerformanceControllerInstance;
// act
var result = performanceController.Search();
//assert
Assert.IsNotNull(result as ViewResult);
}
ExtractJsonFile
메서드 때문에 테스트에 실패했습니다. 그것은 HttpContext
을 사용하며 그 값은 null
입니다. Rhino Mock을 사용하여 다양한 클래스를 조롱합니다.
단위 테스트에 가장 적합한 방법은 무엇입니까? Darin in this thread 우리가 코드 테스트를 원한다면 HttpContext.Current
을 피할 것을 제안합니다. 내가 시도하는 방식 조롱으로
HttpContext를하고 null이 아닌 만들었지 만, 다음 Server
이 null
, 나는 앞서 갈 수도 내가 (나는 방법을 아직 모른다) 가정 것을 모의하지만, 더 좋은가 방법? 필요한 경우 주요 리팩터링을 수행하는 데 아무런 문제가 없습니다.