Jak wykonać test jednostkowy ViewModel metodą asynchroniczną.

Nie jestem pewien, od czego zacząć, ale pozwólcie, że podam krótki pomysł, gdzie jestem i co chcę osiągnąć. Jestem całkiem nowy w Testowaniu Jednostek na MVVM i mam trudności z testowaniem poleceń, które ujawniłem za pomocą właściwości komend delegowanych PRISM. Moje polecenia delegata wywołują metodę asynchroniczną, która musi być oczekiwana, aby uzyskać rzeczywisty wynik. Poniżej znajduje się metoda asyc, która jest nazywana metodą, którą chciałem przetestować.

 async void GetTasksAsync()
        {
            this.SimpleTasks.Clear();
            Func<IList<ISimpleTask>> taskAction = () =>
                {
                    var result = this.dataService.GetTasks();
                    if (token.IsCancellationRequested)
                        return null;
                    return result;
                };
            IsBusyTreeView = true;

            Task<IList<ISimpleTask>> getTasksTask = Task<IList<ISimpleTask>>.Factory.StartNew(taskAction, token);
            var l = await getTasksTask;          // waits for getTasksTask


            if (l != null)
            {
                foreach (ISimpleTask t in l)
                {
                    this.SimpleTasks.Add(t); // adds to ViewModel.SimpleTask
                }
            }
        }

również tutaj jest polecenie w mojej maszynie wirtualnej, które wywołuje powyższą metodę asynchroniczną

  this.GetTasksCommand = new DelegateCommand(this.GetTasks);
      void GetTasks()
        {
                GetTasksAsync();
        }

a teraz moja metoda testowa wygląda tak

 [TestMethod]
        public void Command_Test_GetTasksCommand()
        {
          MyViewModel.GetTaskCommand.Execute(); // this should populate ViewModel.SimpleTask 
          Assert.IsTrue(MyBiewModel.SimpleTask != null)
        } 

Obecnie otrzymuję, że moja ViewModel.SimpleTask = null jest taka, ponieważ nie czeka na zakończenie metody asynchronicznej. Rozumiem, że istnieją pewne pokrewne tematy, które są już w przepełnieniu stosu, ale nie mogłem znaleźć czegoś związanego z moimi DelegateCommands.

questionAnswers(1)

yourAnswerToTheQuestion