2011-01-14 3 views
0

私はMVVM Lightを試していますが、ViewToMommandの機能に触発され、View ModelやXAMLのアプリケーションの外からドラッグアンドドロップを簡単に処理できるようになっています。しかし、私はRelayCommandを単体テストする方法が混乱しています。私RelayCommandはユニットテストRelayCommand <DragEventArgs> DropFile?

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

単純に宣言された後、機能は、ViewModelにコンストラクタ内に割り当てられインラインではないが、私はDropFileのためのユニットテストを書いているときのViewModel

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

のメソッドを使用していますRelayCommand私は何を呼び出すか分からない?私は

testTarget.DropFile.Execute(params) 
を呼び出すべきであるとDragEventArgsだけ空のコンストラクタを持っており、その主要な特性だけでセッターをしませゲッタリングされているので、どのようにしてのparamsを構築していますか?

答えて

2

これは、MVVM-Light固有のリレーコマンドだけでなく、標準コマンドにも当てはまります。

ユニットテスト可能でなければならないロジックは、メソッドとしてviewmodelに実装してからコマンドから呼び出す必要があります。

コマンドの残りの部分は、UIから情報を抽出する、つまりパラメータを適切な型に変換して渡すロジックにする必要があります。

このように、エンティティとしてのビューモデルはユニットテスト可能です。コマンドは非常に細く、everyones happy =]に保たれます。

N.B.単体テストに特に厳格にしたいのであれば、ViewModelのメソッドで変換が行われるはずですが、通常はヌルパラメータを処理できる限り、すべてのセットが怠け者になってしまいます。

希望があれば

関連する問題