0

私はMVVMLightを試しています。これは、ビューモデルとXAMLでアプリの外部からのドラッグアンドドロップを簡単に処理できるように見えるEventToCommand機能に部分的に触発されています。ただし、RelayCommandの単体テスト方法に混乱しています。私のRelayCommandは単純に宣言されています

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

次に、機能はViewModelコンストラクター内で割り当てられます。インラインではなく、ViewModelのメソッドを使用します。

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

DropFile RelayCommandの単体テストを作成しているときに、何を呼び出すべきかわかりませんか?電話する必要があります

testTarget.DropFile.Execute(params)

DragEventArgsには空のコンストラクターしかなく、その主要なプロパティはセッターではなくゲッターであるため、どのようにパラメーターを構築するのでしょうか。

4

1 に答える 1

2

これは、標準コマンドとMVVM-Light固有のリレーコマンドに当てはまります。

ユニットテスト可能である必要があるロジックは、メソッドとしてビューモデルに実装してから、コマンドから呼び出す必要があります。

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

このように、エンティティとしてのビューモデルはユニットテスト可能であり、コマンドは非常に薄く保たれ、誰もが満足しています=]。

注意:ユニットテストを特に厳密にしたい場合は、ViewModelのメソッドで変換を行う必要がありますが、通常、nullパラメータを処理できる限り、すべてのセットが怠惰になります。

お役に立てば幸い

于 2011-01-17T12:52:27.247 に答える