2009-07-01 6 views
4

새로운 ASP.NET MVC 응용 프로그램에서 단위 테스트를 위해 NUnit을 사용하고 Dependancy Injection을 사용하여 TDD 접근 방식을 따르고 있습니다.단위 테스트 MVC보기 란 무엇을 의미합니까?

Google의 견해에 가장 적합한 방식으로 데이터를 제공하도록 모델을 조정하여 가능한 한 "멍청한"의견을 제시합니다.

우리의 의견을 테스트하는 데 장점이 있습니까? 그렇다면 어떻게?

답변

5

MVC 패턴의 장점은 뷰가 매우 가볍고 코드를 테스트해야합니다.

뷰에 테스트해야하는 코드가 포함되어있는 경우 컨트롤러 또는 모델 및 유닛으로 뷰 밖으로 이동해야합니다.

+1

여전히 for 루프를 포함하여 엔티티 컬렉션을 반복하고 표시 할 수 있습니다.for 루프가 중단 될 수 있으며 루프 논리를 테스트하여 표시 할 수 있습니다. –

+0

@Andrei Rinea : 루프가 수행하는 것을 렌더링하는 헬퍼를 만들고 헬퍼를 단위 테스트합니다. –

+0

콘텐츠/스크립트/CSS 참조를위한 도우미? 그것들은 저에게 테스트 해 볼 가치가 있습니다. 특히 Url.Content ("~/something")' – Maslow

3

저는 아직 ASP.net MVC에 익숙하지 않지만 MVC 패턴에 대해 잘 알고 있습니다. 일반적으로 나는 당신이 당신의 견해를 테스트함으로써 더 많은 것을 얻지 못한다고 말할 것이다. MVC 방식을 사용하면 도메인 논리가 컨트롤러 클래스와 비즈니스/서비스 계층 클래스의 비즈니스 논리에 상주합니다. 따라서 서비스 계층을 단위 테스트하면 비즈니스 로직이 만족 스럽다는 것을 보장해야합니다 (이것이 주요 목표 임). 필요하다면 Http 요청을위한 mock 객체를 사용하여 컨트롤러에 대한 추가 테스트를 조사하면 도메인 로직이 정상적으로 작동한다는 것을 보증 할 수 있습니다.

그래서 단위 테스트를 통해 내게 더 많은 혜택을 줄 수 있다고는 생각하지 않습니다. UI 등의 사용자 클릭을 시뮬레이트하는 레코더 (또는 유사한 프레임 워크)와의 관계에서 뷰 테스트에 대해 들었습니다.

4

ASP.NET MVC 테스트와 관련하여 Justin Etheredge가 이번 주 초 좋은 기사를 읽었습니다. 다음 Building Testable ASP.NET MVC Applications

저스틴 실제로 문서의 작은 "사이드 바"섹션에서 뷰의 테스트를 해결 않으며, 상태 :

ASP.NET MVC 코드 숨김 여기

링크입니다 페이지

최종 릴리스 전에 ASP.NET MVC를 따르는 경우 코드 숨김 페이지가 프레임 워크에서 제거 된 것을 보았을 수 있습니다. 이 페이지는 ASP.NET MVC 프레임 워크에서 아무 기능도 제공하지 않았고 뷰가 속하지 않는 뷰에 로직을 추가했습니다. 뷰에 포함 된 논리는 ASP.NET Web Forms의 코드 숨김 파일을 테스트하기가 어렵다는 것과 거의 같은 방식으로 테스트하기가 어렵습니다.

나는 "보기"내부의 논리를 "냄새"의 일부로 여기는 경향이 있으며 개인적으로 그러한 논리를 제거하고 배치하는 방법을 찾고 있습니다. 컨트롤러 또는 모델에서 테스트가 훨씬 쉬워집니다.

1

MVC 패턴에 대한 좋은 점은 다른 패턴 (또는 안티 패턴)보다 UI 레이어를 훨씬 더 단위 테스트 할 수 있다는 것입니다. 그러나 뷰를 테스트하는 것은 브라우저와 같은 외부 종속성이 필요하기 때문에 단위 테스트로 수행 할 수 없습니다.

이것은 뷰를 테스트하면 안된다는 것을 의미하지 않으며, 단지 유닛 테스트 뷰를 사용할 수 없다는 것을 의미합니다. 기능적/통합 테스트는 여전히 좋은 생각입니다.

관련 문제