Чтобы устранить проблему, связанную с тем, что Xamarin формирует SlideOverKit, SlidemenuView (Hidemenu, упомянутый в коде) не закрывается быстро при нажатии любой опции в нем, поэтому я использовал Task.Delay(1)
в следующем коде. Это исправляет проблему закрытия slidemenuView.
Однако, при этом мой модульный тест не пройден
Может ли кто-нибудь мне помочь?
[Test]
public void NavigateCommand_SelectingOtherWorkdOrderPage_ShouldNavigateToOtherWorkOrderPage()
{
//Arrange
string _selectedMenuItem = ServiceTechLocalization.HamburgerMenu_OtherAssignments;
//Act
_mockNavigationMenuViewModel.NavigateCommand.Execute(_selectedMenuItem);
//Assert
_mockTeamNavigationService.Received().PushLandingPage(false);
}
private DelegateCommand<string> _navigateCommand;
public DelegateCommand<string> NavigateCommand => _navigateCommand ?? (_navigateCommand = new DelegateCommand<string>(async (a) => await Navigate(a)));
public async Task Navigate(string selectedItem)
{
HideMenu?.Invoke();
await Task.Delay(1);
if (ServiceTechLocalization.HamburgerMenu_OpenAssignments.Equals(selectedItem))
{
Telemetry.TrackEvent(Constants.TelemetryKeys.Modules.Navigation, Constants.TelemetryKeys.HamburgerMenu, "OpenAssignmentsTapped");
await _teamNavigationService.PushLandingPage();
return;
}
elseif (ServiceTechLocalization.HamburgerMenu_OtherAssignments.Equals(selectedItem))
{
Telemetry.TrackEvent(Constants.TelemetryKeys.Modules.Navigation, Constants.TelemetryKeys.HamburgerMenu, "OtherAssignmentsTapped");
await _teamNavigationService.PushLandingPage(false);
return;
}
}
0
Если я изменю мой DelegateCommand, как показано ниже , это работает.
ОДНАКО Я НЕ ДОЛЖЕН ИЗМЕНИТЬ КОД ПРОИЗВОДСТВА ДЛЯ ТЕСТИРОВАНИЯ ЕДИНИЦЫ.
ЛЮБАЯ ИДЕЯ, ЧТОБЫ ИСПРАВИТЬ ЭТО?
private DelegateCommand<string> _navigateCommand;
public DelegateCommand<string> NavigateCommand => _navigateCommand ?? (_navigateCommand = new DelegateCommand<string>((a) => Task.WaitAll(Navigate(a)));
Это ИСПРАВЛЯЕТСЯ, если я используйте Task.Delay в коде модульного теста, но я не знаю, было ли это правильно или нет. ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ
[Test]
public async Task NavigateCommand_SelectingOtherWorkdOrderPage_ShouldNavigateToOtherWorkOrderPage()
{
//Arrange
string _selectedMenuItem = ServiceTechLocalization.HamburgerMenu_OtherAssignments;
//Act
_mockNavigationMenuViewModel.NavigateCommand.Execute(_selectedMenuItem);
await Task.Delay(10);
//Assert
_mockTeamNavigationService.Received().PushLandingPage(false);
}