В моей модели представления входа в систему я внедряю навигационный сервис. Этот сервис навигации используется в следующем коде для перехода к определенному экрану
public async Task HandleLoginCommand()
{
var asdf = _navigationService.PushAsync(new MainPage(), false);
await asdf;
}
Интерфейс, который я высмеиваю
public interface INavigationService
{
Task PushModalAsync(Page contentPageToOpen, bool animated);
Task PushAsync(Page contentPageToOpen, bool animated);
}
Я написал для этого модульный тест, и он выглядит так:
[Fact]
public async Task HandleLoginCommand_NavigatesToMainPage_WhenLoginSucceededAsync()
{
// Arrange
navigationService.Setup(s => s.PushAsync(It.IsAny<Page>(), false)).Returns(Task.CompletedTask);
// Act
// _loginViewModel.LoginHandelerCommand.Execute(null);
await _loginViewModel.HandleLoginCommand();
// Assert
navigationService.Verify(m => m.PushAsync(It.IsAny<Page>(), false), Times.Once);
}
Это не работает, установка не переопределяет поведение метода pushasyn c. Когда я пытаюсь поймать его, он говорит: «Вы ДОЛЖНЫ вызвать Xamarin.Forms.Init (); перед его использованием». Итак, я думаю, что установка идет не так, но почему?