Модульный тест класса с импортированными значениями по MEF - PullRequest
1 голос
/ 07 сентября 2010

У меня есть класс с именем "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 ]

2 голосов
/ 07 сентября 2010

Вы бы предоставили вашему ViewFactory набор значений ExportFactory<,>, подходящих для конкретного теста.Разные тесты могут иметь разные наборы, чтобы вы могли тестировать разные вещи.По сути, вы подделываете введенную зависимость.

0 голосов
/ 05 ноября 2010

Вот код (для 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;
...