тестирование с использованием классов Unity и Accessor - PullRequest
1 голос
/ 24 января 2011

Итак, мне нужно протестировать некоторые модели представлений, которые имеют закрытое поле, содержащее адаптер, этим адаптером манипулируют через ICommands / input / etc из представлений, я думаю, что это довольно распространенная модель, представление предоставляет некоторые открытые свойства, которые специфичны для конкретного представления, а затем адаптер скрывается в частном поле. Теперь моя проблема - тестирование. Я использую Unity для регистрации экземпляра этого адаптера, и затем каждая модель представления, конечно, получает тот же экземпляр, но я не могу проверить его, потому что он является закрытым, поэтому я создал класс средства доступа, но не могу понять, как создать и пример этого. Может быть, какой-то код поможет объяснить, что я пытаюсь сделать. Помните, что я новичок в тестировании, поэтому, если я чего-то не понимаю, пожалуйста, дайте мне знать.

[TestInitialize]
public void Initialize()
{
  container = new UnityContainer();
  container.RegisterType<IEventAggregator, EventAggregator>();
  container.RegisterType<IRegionManager, RegionManager>();
  //Notice that I am not calling registertype but later on I call container.Resolve asking for 
  //CreateRgaViewModel - this is because I don't have to regiter the types / instances of 
  //whatever I am directly asking for but I do have to register anything it depends on. 
  //container.RegisterType<CreateRgaViewModel>();
  var adapter = new RgaWizardAdapter(container);
  //So we don't want to get any data at this point because this is not an integrration test
  //adapter.InitializeRga(873632);

  container.RegisterInstance<IRgaWizardAdapter>("RgaAdapterInstance", adapter);

  var appCommands = new ApplicationCommands(container);
  container.RegisterInstance<IApplicationCommands>(appCommands);
}

[TestMethod]
public void CanCreate_CreateRgaViewModelAndGetNamedInstanceOfRgaDocument()
{
  try
  {
    //this fails 
    //CreateRgaViewModel_Accessor createRgaViewModel = container.Resolve<CreateRgaViewModel_Accessor>();
    //this works
    CreateRgaViewModel createRgaViewModel = container.Resolve<CreateRgaViewModel>();
    Assert.IsNotNull(createRgaViewModel, "CreateRgaViewModel was null");
  }
  catch (Exception ex)
  {

  }
}

Моя проблема в том, что я нахожу много материала при тестировании, но, похоже, это связано с использованием silverlight. Я не создаю приложение silverlight, это настольное приложение WPF / MVVM.

Спасибо за вашу помощь

...