2009-10-29 4 views
0

: 뷰 모델이 비어있는 경우Asp.Net MVC 유닛 테스트 I 임 단위 테스트하려고 다음과 같은 작업을 한 컨트롤러 액션

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Default(ProductsViewModel model) 
    { 
     var locationId = model.LocationId; 
     var locationText = model.LocationText; 

     return locationId > 0 ? Summary(locationId, locationText, 1, "Date", true) : View(); 
    } 

, 그럼 그냥보기가 반환됩니다. 그러나 ID가 포함되어 있으면 요약 작업이 호출되고 모든 작업 (db 호출, 새 뷰 모델 생성 등)이 수행됩니다.

그러나 단위 테스트에서 어떻게 호출되었는지 주장 할 수 있습니까?

답변

2

아마도 당신은 이미 수행 한 작업을 다루는 요약 테스트를 이미 마쳤을 것입니다. 이 경우 두 가지를 구별 할 수있는 항목 (예 : 요약을 호출하고 테스트 한 경우에만 해당)을 선택합니다. 예를 들어, Summary가 호출 된 경우에는 null이 아닌 Model을 확인하고 Model 속성이 올바르게 설정되었는지 확인할 수 있습니다. 내가 볼 수있는 유일한 대안은 컨트롤러를 부분적으로 조롱하고 메서드가 호출 될 것이라는 기대를 설정하는 것입니다.

참고로, 나는 TDD를하고 있다는 가정을하지는 않지만, 만약 당신이 TDD를하고 있었다고 생각하는 것은 아닙니다. TDD를 수행했다면, 리팩토링의 결과로 Summary가 사용했던 것의 많은 부분에 대해 이미 많은 테스트를 거쳤습니다. 그 시점에서 기존 테스트와 요약 테스트가 충분할 것이며 더 이상의 테스트가 필요하지 않을 것입니다. 적어도 요약에 대한 테스트가 이미 포함되어있는 것을 복제 할 필요는 없습니다.

관련 문제