기본적으로 Execute 및 CanExecute에 대해 두 명의 대표를 허용하는 클래스가 있습니다 (간단히하기 위해 MyCustomCommand라고 부릅니다). 이 클래스는 ICommand를 구현합니다. 이렇게하면 XAML에서 바인딩 한 뷰 모델에서 속성을 선언 할 수 있습니다.뷰 모델에 ICommand가 포함 된 경우 모의 단위 테스트
문제점은 ApplyChangesCommand라는 명령 중 하나의 종속성으로 인해 뷰 모델을 모의해야하는 시나리오로 실행되었습니다. 나는 의존성이 아직 나쁜 것임을 확신하지 못합니다. 이 시점에서 상대적으로 필요합니다.
이 종속성 때문에 모의 설정을 사용하여 기본적으로 종속성을 우회하는 "아무 것도하지 않는"콜백을 만듭니다.
뷰 모델을 모의 했으므로 모든 인스턴스 속성은 물론 null입니다. 여기에는 내 명령이 포함됩니다.
간단한 예는 다음과 같습니다 실제로 ApplyChangesCommand의 _somethingToExecute를 호출 할 수 있습니다 모의와 어떤 방법
private void _somethingToExecute;
public ICommand ApplyChangesCommand { get { return MyCustomCommand(_somethingToExecute, e=>true); }
있습니까? Callbase는 그것을 잘라 내지 않으며 그것을 할 수있는 다른 방법을 생각할 수 없다.
한 가지 해결 방법은 "_somethingToExecute"를 public으로 만들고 내 테스트에서 ApplyChangesCommand를 만드는 것이지만 팬이 아닙니다.
감사의 말.
내가 묻는 것을 얻기 위해 몇 번 읽어야했기 때문에 여기에서 벗어날 수 있습니다. Command 또는 Command가 포함 된 ViewModel을 테스트 할 때 문제가 있습니까?커맨드 (당신이 묻는 것)가 있다면, 들어오는 델리게이트를 'MyCustomCommand' 생성자로 조롱 할 수 없으며 모의 델리게이트가 호출되었는지 만 확인하면됩니까? 이것은 명령에 대한 정확한 단위 테스트 일 것입니다. ViewModel을 테스트하는 것은 비슷할 것입니다. Command를 모의 해보고 Execute 호출이'_somethingToExecute'를 호출하도록합니다. – Gjeltema
제안 해 주셔서 대단히 감사합니다. 저것을 들여다 보자 ... 올바른 길에있을 것 같은 소리! 보기 모델을 모의하고 있기 때문에 제 문제는 실제로 명령을 테스트하는 단위를 중심으로 회전합니다. View Model이 조롱 되었기 때문에 명령 자체는 null입니다. – tronious