我有一个名为“ViewFactory”的类,这个类应该提供正确的视图
现在它只有一个方法(它会增长),我想写一个单元测试。
班级看起来像这样......
public class ViewFactory
{
[ImportMany(AllowRecomposition=true)]
IEnumerable<ExportFactory<DependencyObject, IViewMetaData>> Views { get; set; }
public DependencyObject GetViewByName(string name)
{
DependencyObject view = null;
try
{
view = Views.Where(v => v.Metadata.ViewName == name).FirstOrDefault().CreateExport().Value;
return view;
}
catch (Exception ex)
{
return view;
}
}
}
我想要的是测试我的方法,但不知道怎么做,因为视图列表是在运行时组成的......
我想测试是否获得有效名称的视图 和 如果名字无效,我也想测试是否为null
什么是正确的方法?
答案 0 :(得分:2)
您可以为ViewFactory
提供一组适合特定测试的ExportFactory<,>
值。不同的测试可能有不同的设置,允许您测试不同的东西。基本上你是假装注入的依赖。
答案 1 :(得分:0)
这是代码(适用于Silverlight)
var viewFactory = new ViewFactory();
// Satisfy the imports manually (No MEF in unit tests!)
var factories = new List<ExportFactory<DependencyObject, IViewMetaData>>();
var tuple = new Tuple<DependencyObject, Action>(new MyObject(), () => { });
var metaData = new MyViewMetaData();
var factory = new ExportFactory<DependencyObject, IViewMetaData>(() => tuple, metaData);
factories.Add(factory);
viewFactory.Views = factories;