Xamarin Forms - модульный тест навигации / создание страницы XAML - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть приложение форм Xamarin, в котором есть модель представления. Эта модель представления имеет код для перехода на эту страницу. Чтобы перейти на эту страницу, модели представления сначала создают новую страницу, используя новое ключевое слово. Если я тестирую этот код модулем, я получаю следующую ошибку: «Вы ДОЛЖНЫ вызвать Xamarin.Forms.Init (); перед его использованием»

Viewmodel:

    private async Task HandleLoginCommand()
    {
        if (!await _authenticationService.Login(_username, _password))
        {
            await _userDialog.AlertAsync(AppResource.login_error);
            return;
        }

        await _navigationService.PushAsync(new MainPage(), false);
    }

Страница XAML код за конструктором

    public LoginPage()
    {
        InitializeComponent();

        NavigationPage.SetHasNavigationBar(this, false);

        BindingContext = DependencyInjectionService.Get<LoginViewModel>();
    }

Модульный тест:

        [Fact]
    public void HandleLoginCommand_NavigatesToMainPage_WhenLoginSucceededAsync()
    {
        // Arrange
        authenticationService.Setup(s => s.Login(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(true);
        navigationService.Setup(s => s.PushAsync(It.IsAny<MainPage>(), false)).Returns(Task.CompletedTask);

        // Act
        _loginViewModel.LoginHandelerCommand.Execute(null);

        // Assert
        navigationService.Verify(m => m.PushAsync(It.IsAny<MainPage>(), false), Times.Once);
    }

Выдает ошибку, когда в этом коде: новый MainPage (). Вероятно, это неправильно в конструкторе при вызове initializecomponent ().

Как я могу исправить эту проблему? Я искал целую вечность ..

...