Итак, мне нужно протестировать некоторые модели представлений, которые имеют закрытое поле, содержащее адаптер, этим адаптером манипулируют через 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.
Спасибо за вашу помощь