代码之家  ›  专栏  ›  技术社区  ›  silverfighter

单元测试由MEF导入值的类

  •  1
  • silverfighter  · 技术社区  · 14 年前

    我有一个名为“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

    正确的方法是什么?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Jon Skeet    14 年前

    你会提供 ViewFactory 带着一套 ExportFactory<,> 适用于特定试验的值。不同的测试可能有不同的集合,以允许您测试不同的东西。基本上你是在假装注入依赖。

        2
  •  0
  •   Aviad Ezra    14 年前

    以下是代码(对于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;