私は 100% のコード カバレッジに近づけようとしており、OpenFileDialog のモックに興味があります。いくつかの調査から、 Open File Dialog MVVMの次のコードのように、IFileDialogService を作成するのが適切な答えのようです。
public interface IOpenFileService
{
string FileName { get; }
bool OpenFileDialog()
// Many other methods and properties of OpenFileDialog here...
}
ただし、これは、OpenFileDialog のすべてのプロパティとメソッドを実装し、実際の OpenFileDialog のプロパティとメソッドを呼び出すためのパススルーにする必要があることを意味します。
私は、MockContainer と RealContainer を持つようなことをしたいと思っていました。それぞれが OpenFileDialog のバージョンを返します。
public class MockContainer
{
IOpenFileDialog FileDialog { get { return new MockOpenFileDialog(); } }
}
public class RealContainer
{
IOpenFileDialog FileDialog { get { return new OpenFileDialog(); } }
}
ただし、共通のインターフェースを実装していないため、それはできません。このアプローチを採用できれば、OpenFileDialog で必要なすべてのものに対して、IOpenFileService でパススルー メソッドを作成する必要はありません。各コンテナーは、呼び出し元が使用できるダイアログを返すだけです。
そのアプローチを機能させる方法はありますか、それとも IOpenFileService が本当にそれを行う方法ですか?
注: フレームワークのモックについては知っています。今日は何かをすぐに実装したかったので、まだモック フレームワークを学習する時間は取りたくありませんでした。私はそれを自分でかなり簡単に嘲笑できると考えました。