У меня есть приложение форм 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 ().
Как я могу исправить эту проблему? Я искал целую вечность ..