0

私はこのようなViewModelクラスを持っています

public class MyViewModel : ViewModelBase
{
    public MyViewModel()
    {
        if (!IsInDesignMode)
        {
            throw new InvalidOperationException();
        }
    }

    public MyViewModel(IDataProvider dataProvider)
    {
        Data = new ObservableCollection<IData>(dataProvider.GetData());
    }

    public ObservableCollection<IData> Data { get; private set; }
}

ここで、設計時のデータを作成したいと思います。私の単体テストでは、これを行うためにモック フレームワーク (Moq) を使用しています。アプリ プロジェクトで IData のモック実装を作成したり、モッキング フレームワークを参照して使用したりする必要があるという事実が気に入りません。

このようなシナリオで設計時のデータを取得するための最もエレガントな方法は何ですか?

編集:関連性があるかどうかはわかりませんが、Visual Studio 2012 を使用しています。

4

1 に答える 1

1

基本的に、設計時のデータのモックではなく、スタブを作成します。スタブに依存関係を注入することはできません。

public class MyDesignViewModel : ViewModelBase
{
    public MyViewModel()
    {
        Data = new ObservableCollection<IData>(new List<IData>() 
        {
             new MyData() { Value1 = 1, Value2 = "Test" },
             ...
        });
    }

    public ObservableCollection<IData> Data { get; private set; }
}

次に、次のように XAML で使用します。

<UserControl x:Class="MyView"
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DataContext="{d:DesignInstance Type=vm:MyDesignViewModel, IsDesignTimeCreatable=True}">
于 2016-06-21T16:05:54.813 に答える