Cómo realizar la prueba unitaria de un modelo ViewModel con método asíncrono.

No estoy seguro de por dónde empezar, pero permítame darle una breve idea de dónde estoy y lo que quiero lograr. Soy bastante nuevo en Unit Testing en MVVM y tengo dificultades para probar los comandos que expuse utilizando las propiedades de comando de delegado de PRISM. Mis comandos de delegado llaman a un método asíncrono que debe esperarse para que pueda obtener el resultado real. A continuación se muestra un método asyc que se llama por el método que quería probar.

 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
                }
            }
        }

También aquí está el comando en mi máquina virtual que llama al método asíncrono anterior

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

y ahora mi método de prueba va como

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

Actualmente, lo que estoy obteniendo es que mi ViewModel.SimpleTask = null se debe a que no espera a que finalice el método asíncrono. Entiendo que hay algunos temas relacionados con esto que ya están en el desbordamiento de pila, pero no pude encontrar algo relacionado con mis DelegateCommands.

Respuestas a la pregunta(1)

Su respuesta a la pregunta