主な指標は次のとおりです。をテストできますか?
ビュー絶対ににはビューモデルへの参照が必要です。どのようにそれはそれ自身が表示する必要がある情報を得るだろうか?通常、ビューのDataContext
のビューモデルを持つだけで十分ですが、依然として依存関係になります。 DataContext
のVMがなければ、ビューは役に立たなくなります。
時にはビューをVMにコールバックする必要がある場合があります。通常、私はコードの背後でこれを行います:
public MyViewModel ViewModel
{
get { return DataContext as MyViewModel; }
}
private void _someEventHandler(object sender, EventArgs)
{
ViewModel.SomeMethod();
}
ビューモデルからビューへの参照を保持することは、注意が必要なところです。 VMが特定のビューの実装に依存している場合、VMはビューに密接に結合されており、結果としてテストすることは困難です。
VMがビューとやりとりする必要がある場合は、要件をインタフェースに抽象化して、ビューにそのインタフェースを実装させることができます。次に、ビューがロードされると、VMが相互作用できる自己への参照をVMに提供できます。
そして、ケントのようにインターフェースを介して話す理由は、あなたがテストのためにこれを模擬することができるということです。テストの目的のためにこのインタフェースを実装するダミービューを作成することができます。 –