Как протестировать навигацию регионального менеджера с помощью модульных тестов и Prism 6 (WPF и MVVM)

У меня есть модель представления, содержащая список алгоритмов. Список отображается в представлении как 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");
    }
}

Это тест, любое предложение будет полезно. Спасибо, Надя


person melculetz    schedule 18.04.2016    source источник
comment
stackoverflow.com/questions/1177646/   -  person StepUp    schedule 18.04.2016