2011-01-14 9 views
0

MVVM Light을 사용해 보았습니다. 일부는 ViewToCommand 기능에서 영감을 얻어서 View Model 및 XAML에서 내 응용 프로그램 외부에서 드래그 앤 드롭을 처리하기가 더 쉬워졌습니다. 그러나 나는 RelayCommand를 단위 테스트하는 방법에 대해 혼란스러워합니다. 나는 DropFile에 대한 단위 테스트를 쓰고 있어요 때 인라인하지만 뷰 모델단위 테스트 RelayCommand <DragEventArgs> DropFile은 어떻게 할 수 있습니까?

this.DropFile = new RelayCommand<DragEventArgs>(dropFileHandler); 

의 메소드를 사용하지 않는, 내 RelayCommand는 단순히

public RelayCommand<DragEventArgs> DropFile { get; private set; } 

를 선언 한 다음 기능은 뷰 모델 생성자 내에서 할당 RelayCommand 나는 무엇을 부를 까 볼 수 없는가? 나는

testTarget.DropFile.Execute(params) 

를 호출해야하며, DragEventArgs는 빈 생성자를 가지고 있으며, 주요 속성 세터하지 게터 단지 때문에 어떻게 하나가 PARAMS를 구성 하는가?

답변

2

이는 MVVM-Light 특정 릴레이 명령뿐 아니라 표준 명령에도 해당됩니다.

단위 테스트 할 수 있어야하는 논리는 메서드로 viewmodel에 구현 된 다음 명령에서 호출해야합니다.

명령에 남은 내용은 UI에서 정보를 추출하는 것, 즉 매개 변수를 적절한 유형으로 변환하고 전달하는 로직이어야합니다.

이 방식으로 엔티티로서의 뷰 모델은 단위 테스트가 가능하며 명령은 매우 가볍게 유지됩니다.

N.B. 유닛 테스팅에 특히 엄격한 방법을 원한다면, ViewModel의 메소드에서 변환을 수행해야하지만, 일반적으로 널 (null) 매개 변수를 처리 할 수있는 한 모든 설정이 게으르다.

희망하는 사람