Non riesco a far eseguire al Dispatcher un delegato che sto passando ad esso durante il test dell'unità. Tutto funziona bene quando sono in esecuzione il programma, ma, durante una prova di unità il seguente codice non verrà eseguito:Utilizzo del Dispatcher WPF in unit test
this.Dispatcher.BeginInvoke(new ThreadStart(delegate
{
this.Users.Clear();
foreach (User user in e.Results)
{
this.Users.Add(user);
}
}), DispatcherPriority.Normal, null);
Ho questo codice nella mia classe di base ViewModel per ottenere un Dispatcher:
if (Application.Current != null)
{
this.Dispatcher = Application.Current.Dispatcher;
}
else
{
this.Dispatcher = Dispatcher.CurrentDispatcher;
}
C'è qualcosa che devo fare per inizializzare il Dispatcher per i test di unità? Il Dispatcher non esegue mai il codice nel delegato.
Che errore ricevi? –
Non ho alcun errore. Solo ciò che viene passato a BeginInvoke sul Dispatcher non viene mai eseguito. –
Sarò onesto e dirò che non ho dovuto testare un modello di vista che utilizza ancora un dispatcher. È possibile che il dispatcher non stia funzionando. Chiamerebbe Dispatcher.CurrentDispatcher.Run() nella tua guida di prova? Sono curioso, quindi pubblica i risultati se li ottieni. –