2008-11-27 3 views
6

메신저 단위 테스트에서보기를 생성하려고하지만 누락 된 VirtualPathProvider 주위에 얻을 수 없습니다. 대부분의 뷰 엔진은 현재 HostingEnvironment에서 공급자를 가져 오는 VirtualPathProviderViewEngine 기본 클래스를 사용합니다.asp.net-mvc 단위 테스트에서 뷰를 생성하는 방법은 무엇입니까?

protected VirtualPathProvider VirtualPathProvider { 
    get { 
     if (_vpp == null) { 
      _vpp = HostingEnvironment.VirtualPathProvider; 
     } 
     return _vpp; 
    } 
    set { 
     _vpp = value; 
    } 
} 

단위 테스트에서는 현재 VirtualPathProvider가없는 경우에도 HostingEnvironment가 없습니다.

어떻게이 문제를 해결할 수 있습니까? 커스텀 FakeWebFormViewEngine을 생성해야합니까?

+0

답변을 찾으셨습니까? 나는 똑같은 문제에 반대합니다 :-) –

+0

2012 년 10 월. "당신이 잘못 테스트하고 있습니다!"라는 말로도 VirtualPathProvider에 의존하는 메커니즘을 실제로 테스트하는 데 관심이있을 수 있습니다. 그래서 궁금 해서요 : 누구든지 거기에 있습니까? –

답변

0

나는 이것을 또한 시도했다. 불행히도 VirtualPathProvider (VPP) 만 문제는 아닙니다. VPP는보기 또는 부분보기를 실제 경로에 매핑하여 파일의 존재 여부를 판별하는 데 사용됩니다. 아쉽게도 ViewContext는 실제 경로가 아닌 가상 경로로 끝나기 때문에 뷰가 렌더링 될 때 Builder는 존재하지 않는 HostingEvnironment의 속성을 사용합니다.

Visual Studio와 Testing을 함께 사용하는 경우 웹 단위 테스트를 사용할 수 있습니다. 이렇게하면 브라우저를 사용하여 URL을 호출 한 다음 응답을 구문 분석하여 값을 확인할 수 있습니다.

0

실례합니다. 무의미한 소리가 들리지만보기를 생성하는 목적은 무엇입니까? 내가 뭔가를 놓친 것일 수도 있지만, 단위 테스트의 주된 초점은 "단위 테스트"입니다. 제대로 설정된 ASP.NET MVC 응용 프로그램에서 테스트해야하는 코드는 컨트롤러와 그 아래에 있습니다. 사실, 제대로 개발되면 아래에 있다고 말할 수 있습니다.

보기의 테스트는 사용자 수락 테스트입니다. 어떤 방법 으로든이 작업을 자동화하는 데는 아무런 문제가 없습니다. 그러나 이것이 단위 테스트로 수행되어야하는 작업인지 확신 할 수 없습니다.

내가 누락 된 항목이 있습니까?

+0

나는 동의한다. 그러나 단위 테스트가 유용하다고 생각하는 시나리오가있다. 뷰 (스파크) 내부에서 "스크립팅"을 허용하는 뷰 엔진이 있습니다.이 기능을 테스트하기위한 간단한 테스트는 훌륭하다고 생각합니다. 오해하지 마세요. 생성 된 HTML 코드를 비교하고 싶지 않습니다. "로그인 양식이 보이나요?" 물건. –

2

수락 테스트를 위해 VS Team System 2010에 제공되는 기능이 사용자가하려는 작업에 적합합니다. Gregory A Beamer에 의해 언급 된 것처럼 MVC에 대한 단위 테스트는 컨트롤러에 수행됩니다. 모델을 구현하는 방법에 따라 모델을 테스트 할 수도 있습니다.

여기에는 많은 논란이 있습니다. 어떤 사람들은 모델을 비즈니스 엔티티로 간주합니다.이 모델에서 뷰에 고유 한 모델을 나타냅니다. 더 많은 뷰 모델. 내 모델에는 실제 기능이 없으므로 테스트 할 필요가 없습니다. MVC 외부에서 내 DAL, 비즈니스 로직 레이어를 테스트합니다. MVC는 실제로 프레젠테이션 레이어의 일부입니다. 응용 프로그램이 아닌 프레젠테이션의 레이어입니다. 여전히 응용 프로그램을 계층화합니다.

단위 테스트가 진행되는 곳에서 컨트롤러는 테스트하는 곳입니다. 테스트가 필요한 메소드가 있으면 모델을 테스트 할 수 있습니다. 견해에 관해서는 사용자 또는 Watin과 같은 자동화를 통해 수용 여부를 테스트합니다.

0

보기를 테스트하기 위해 통합 (및 어느 정도 단위)을 시도 할 수 있습니다.

관련 문제