2011-03-17 2 views
7

WPF 프리즘 응용 프로그램을 개발 중이며 모든 것이 잘 작동합니다. 내 뷰 모델에는 모두 MEF에 의해 주입되는 인터페이스가 있습니다.보기 모델 및 인터페이스 정보

그러나 뷰 모델에 대한 인터페이스의 이점을 실제로 이해하지 못합니다. 결국 뷰는 뷰 모델에 묶여 있으므로 다른 구현은 결코 없을 것이라고 생각합니다.

사실 내보기에도 인터페이스가 있습니다. 이것은 또한 잔인한 것으로 보인다?

제 질문은 : 모든 뷰와 뷰 모델 인터페이스를 제거하고 뷰를 삽입하고 모델을 직접 볼 수는 없습니까? 보기 및보기 모델에 대한 인터페이스를 유지할 이유가 있습니까?

들으, L

답변

4

VieWModel을 인터페이스하면 테스트를 조롱하고 뷰를 인터페이스 할 수있어 실제로 과장된 것처럼 보입니다. 당신은 당신의 뷰를 교환하지 않을 것이고 UI 테스트는 ViewModel의 mock에서 수행 될 수 있으므로 필자가 생각한 인터페이스를 실제로 필요로하지는 않는다.

+0

왜 테스트에서 ViewModels를 조롱 했습니까? 난 그냥 실제 ViewModel을 사용합니다. –

+0

나는 ViewModels에 기대를두기 위해 모의했다. 그렇게하면 뷰를 테스트 할 때 뷰가 어떻게 나타나는지 알 수 있습니다. ViewModels에 데이터를 채우고 테스트하는 동안 테스트를 제공 할 수도 있습니다. 참으로 똑같습니다. –

+1

감사합니다. 그렇기 때문에 뷰 모델을 인터페이싱하는 데 실제로 많은 부가 가치가 없다고 말할 수 있습니다. 1. 테스트해야하는 뷰 모델 자체이기 때문에 조롱 할 필요가 없습니다. 2. 따라서 서브 뷰 모델을 조롱하는 것은별로 의미가 없습니다. 실제 모델을 테스트하고 싶기 때문입니다. 3. 뷰를 테스트하기 위해 실제 뷰 모델을 데이터로 채 웁니다. 4. 뷰가 뷰 모델에 결합되면 항상 1 개의 구현이있게됩니다. –

2

난 당신이 단위 테스트 동안 사용하는 인터페이스를 구현하는 모의 객체를 작성할 수 있다는 것입니다 ViewModels에 대한 인터페이스 생각할 수있는 가장 큰 이유. 하나의 ViewModel이 다른 ViewModel과 대화 할 수 있으므로 첫 번째 ViewModel을 테스트 할 때 두 번째 ViewModels 비헤이비어를 스텁 아웃 할 수 있습니다.

MVVM 패턴을 사용하면 단위 테스트를 작성하기가 더 어려워진 UI 레이어에서 데이터와 컨트롤을 구분할 때 클래스를 단위 테스트 할 수 있습니다. 개인적으로 필자는 비록 나의 견해를위한 인터페이스를 작성하지 않는다.

7

과장입니다. ViewModel을 조롱하고 싶다고 생각하지만, 실용적으로 생각하는 것이 더 중요하다고 생각합니다. 게다가 ViewModels를 조롱해야하는 이유는 무엇입니까? 조롱을받을 필요가있는 로직은 서비스 클래스 IMHO에 넣어야합니다.

+0

그것은 실제로 또한 나의 첫번째 생각이었다. 여러보기 모델을 사용하는 경우 하나의 모델을 테스트하고 다른 모델을 조롱 할 수 있다는 이점이있는 것 같습니다. 나는 이제까지 그것을 할 것인지 궁금합니다. 대부분의 논리는 실제로 주입 된 '서비스'에 있으며 내 모의 구현체를 대체 할 수 있습니다. –