私は厳密なTDDを実践しようとしており、DelegateCommandsに関連する問題とCanExecuteが呼び出されたことをテストしています。 「リストからアイテムを選択すると、子アイテムを追加できるはずです」 「リストからアイテムを選択しないと、子アイテムを追加できないはずです」というメッセージが表示されます。 ユニットテストの方法CanExecuteChangedとRaisePropertyChanged
CanAddChildItemsがユニットテストで呼び出されないため、CanAddChildItemsが呼び出されることを確実にするために2番目のテストを書きました。 SelectedListItemのSetterにAddChildItems.RaiseCanExecuteChaned()を置いても、それはありません。
明らかに、アプリケーションはAddChildItems.RaiseCanExecuteChaned()がなければ必要に応じて動作しませんが、実際にテストするテストをしていなければ、それを置くことはできません。
私はこのシナリオを自信を持ってテストできますか?
あなたのテストで何が行われているかを理解することができません。このためにUIテストを使用していますか?または、ビューモデルを直接演習していますか?テストごとにセットアップ、実行、アサーションを記述した擬似コードを書き、それを質問に追加する必要があります。または、ビューモデルの少なくとも一部のコードで、DelegateCommand、Execute、およびCanExecuteメソッドを表示します。 –
@Merlyn - これはWPFのMVVMブレンドと少し相性があります - コマンドはアクションを表します。これは何か(Execute)を呼び出し、呼び出すことができる(CanExecute)ことを公開し、イベントをCanExecuteChanged(例えば、enabledプロパティを設定するために再クエリーする必要があることをButtonに伝えるため)を発生させます。 – Gishu
私はDelegateCommandが何をしているのか知っています:)あなたの質問にいくつかのコードが含まれていることを意味し、どのコードを含めるべきかについて具体的にしようとしていました。実際の*コード*を持たないコードを参照するこの中間のテキストブロックは読みにくいです。 –