C# 单元测试WPF中的ResourceDictionary

C# 单元测试WPF中的ResourceDictionary,c#,wpf,unit-testing,mvvm,C#,Wpf,Unit Testing,Mvvm,我使用一个基类来动态创建MVVM风格的插件 我想调用这个函数来获取视图 public override System.Windows.ResourceDictionary GetViewTemplate() { var dictionary = new ResourceDictionary { Source = new Uri("/IPDev.Plugins.Calibration.Comment;component/CommentCmcTemplate.xaml

我使用一个基类来动态创建MVVM风格的插件 我想调用这个函数来获取视图

public override System.Windows.ResourceDictionary GetViewTemplate()
{
    var dictionary = new ResourceDictionary
    {
        Source = new Uri("/IPDev.Plugins.Calibration.Comment;component/CommentCmcTemplate.xaml",
                       UriKind.RelativeOrAbsolute)
    };
    return dictionary;
}
这是调用我的函数的函数

public CalibrationViewModelBase Load(ProductionProjectVersions productionProjectVersions, IAdditionalDataStorageService additionalDataservice, CalibrationToolVersion calibrationToolVersion) 
{
    var viewModel = GetViewModel(productionProjectVersions, calibrationToolVersion);
    viewModel.Title = GetTitle();            
    viewModel.AdditionalDataService = additionalDataservice;
    viewModel.ConverterFactory = GetConverterFactory(productionProjectVersions);
    ResourceDictionary dict = GetViewTemplate(); //here is the call
    Application.Current.Resources.MergedDictionaries.Add(dict);
    viewModel.HelpTemplate = dict[HELP_TEMPLATE_NAME] as DataTemplate;            
    return viewModel;
}
在单元测试中,视图当然不存在。
你能提出克服这个问题的办法吗

将GetViewTemplate方法提取到可以模拟的外部依赖项中。例如,创建一个新的ViewTemplateRepository类和关联的IViewTemplateRepository接口,该接口具有GetViewTemplate方法

在运行时代码中,将ViewTemplateRepository类实例注入调用类。在测试代码中,将IViewTemplateRepository的模拟注入调用类,并模拟GetViewTemplate方法以返回相应的资源字典