У меня есть модель представления, содержащая список алгоритмов. Список отображается в представлении как ListBox, и пользователь может выбрать один из алгоритмов. После выбора алгоритма пользователь может нажать кнопку, которая должна выполнить команду в модели представления, которая загружает другое представление с деталями выбранного алгоритма.
Я хочу проверить это, создав модульный тест и убедившись, что навигация также работает. Но я предполагаю, что мне нужно выполнить дополнительную инициализацию для диспетчера регионов, потому что коллекция IRegionManager.Regions имеет значение null, и, поскольку она предназначена только для чтения, я не могу ее создать.
[TestClass]
public class MockingAlgorithmsTests
{
[TestMethod]
public void AlgorithmVM_LoadSelectedAlgorithmCommand()
{
Mock<IRegionManager> regionManagerMock = new Mock<IRegionManager>();
Mock<IEventAggregator> eventAgregatorMock = new Mock<IEventAggregator>();
IAlgorithmService algorithmService = new MockingAlgorithmService();
AlgorithmsViewModel algorithmsVM = new AlgorithmsViewModel(regionManagerMock.Object, eventAgregatorMock.Object, algorithmService);
// select algorithm
algorithmsVM.SelectedAlgorithm = algorithmsVM.Algorithms.First();
// execute command which uses the previous selected algorithm
// and navigates to a different view
algorithmsVM.LoadSelectedAlgorithmCommand.Execute(null);
// check that the navigation worked and the new view is the one
// which shows the selected algorithm
var enumeratorMainRegion = regionManagerMock.Object.Regions["MainContentRegion"].ActiveViews.GetEnumerator();
enumeratorMainRegion.MoveNext();
var viewFullName = enumeratorMainRegion.Current.ToString();
Assert.AreEqual(viewFullName, "TestApp.AlgorithmViews.AlgorithmDetails");
}
}
Это тест, любое предложение будет полезно. Спасибо, Надя