基本的にMVVMを使用してパブリックICommandsを公開する場合、代理人は公開または非公開にする必要がありますか?WPF MVVM - ユニットテストコマンド - 非公開VSパブリックメソッド?
答えて
- 彼らは:だから、あなたは本当にメンバーをテストしていないが、さらにもう一度、彼らは、特定の順番にペアでテストしなければならない意味のコマンドを、テストしていますクラスのpublic interfaceの一部ではありません。これは、パブリックICommandプロパティのためのものです。
個人的に私はプライベートな方法で行くつもりですが、その理由を教えてください。 ICommand
が公開されています。これは、消費するビューがExecuteを呼び出す前にCanExecuteを呼び出す必要があると言います。もしそうでなければ、彼らはAPIに逆らって足に自分自身を射撃し、その時点であなたの手からは外れています。誰かがリフレクションを使用して重要なプライベート変数をnullに設定し、これによりクラスデザインを破ったように、足で自分自身を撃ったように。ではなぜメンバーをプライベートにするのですか?直接呼び出されるべきではないメンバーを公開する必要はないからです。
は基本的に、あなたはユニットあなたが個別にそうしていないメンバーをテストするとき、あなたはAPIが実行されるメンバーのために意図した方法で行ってください。私は彼らがプライベートになるだろう
if (CanExecute)
{
Execute;
}
かなり編集を実行INotifyPropertyChangedの行動とのICommandをテスト - または私はちょうど何かを逃しました? :) –
@chibacity:時々私は暴言をする傾向があります。私は単体テストになる前に似たようなことを尋ねましたが、誰かがAPIに反対すると、それがその上にあると私に言ったのです。あなたは、これまでのところ、適切な図書館やアプリを破壊しないように誰かを守るだけです。 –
私は、何かの単純なコントロールの増加、減少ボタンとスライダの表示値のためのMVVMを持っています。
あなたは、テストのICommandとINotifyPropertyChangedのを持っている場合は、unittestのの種類作ることができます:あなたが見ることができる
[TestMethod]
public void TestViewModel3()
{
int min = -10;
int max = 10000;
int initVal = 50;
bool initState = false;
ToglledSliderModel model = new ToglledSliderModel(initState, initVal, min, max);
ToglledSliderViewModel viewModel = new ToglledSliderViewModel();
viewModel.Model = model;
int status = 567;
viewModel.PropertyChanged += delegate
{
status = 234;
};
for (int i = 1; i < 100; i++)
{
status = 567;
ICommand ic = viewModel.IncreaseValue;
ic.Execute(this);
Thread.Sleep(2);
Assert.AreEqual(status, 234);
Assert.AreEqual(model.SliderValue, initVal + i);
}
}
を、私は
- 1. MVVM公開プロパティ付きバインディング
- 2. 私のコードを安全にする方法は? - 非公開vs.公開
- 3. VS 2015公開出力パス
- 4. SWCrypt公開鍵VS PKCS8PEM鍵
- 5. プッシャーチャネル:公開または非公開?
- 6. Facebookグラフオブジェクト - 公開または非公開?
- 7. View Controls表示/非表示WPF MVVM
- 8. Typescriptの非公開
- 9. XUI JSフレームワークプラグインでパブリックメソッドを公開していますか?
- 10. WPF MVVM別のビューから開く
- 11. Silverlight MVVM vs Prism
- 12. WPF mailto MVVMバインド
- 13. WPF MVVMツリービュー
- 14. wpf mvvmアクセラレータキーバインド
- 15. WPF MVVMアプリケーションのスプラッシュ画面
- 16. Jekyllの非公開URL 404
- 17. 非公開仮想イメージクライアント?
- 18. Pyspark非公開にRDD
- 19. GitHub上の非公開マークダウンテキスト
- 20. バグ:VS 2017 ASP.NETコアアプリケーションをIISに公開
- 21. クラス属性宣言:プライベートvs公開
- 22. VS Express版Webサイトの公開
- 23. VSコードからAzureにアプリを公開
- 24. Buddypressの公開グループ、非公開グループ、非公開グループのタブを個別に表示
- 25. MVVMのWPFチャートコントロール
- 26. WPF MVVMダイアログ例
- 27. WPFローカライズエクステンションMVVMバインディング
- 28. WPF/MVVM検証
- 29. MVVM WPF - ログインロジック
- 30. MVVM WPFスクリーンキャスト?
+1パブリックインターフェイスをテストします。 –
私のクラスにはインターフェイスはありませんが、それは単なるクラスです。 – michael
@michaelクラスの「public」メソッドとプロパティのコレクションは、消費者がそのクラスとどのようにインターフェースするかという点で、そのクラスの「インターフェース」と見なされます。 – dlev