2010-02-02 7 views
2

J'ai un code dans mon modèle de vue comme suit:tests unitaires quelque chose avec ObserveOnDispatcher

miService.GetSomething(par1, par2) 
.ObserveOnDispatcher() 
.Subscribe(dt => 
{ 
    DoSomething(dt); 
}); 

Puis dans mon test, je suis "moqueur" mon service comme suit:

miService.Setup(ms => ms.GetSomething(....)) 
.Returns(Observable.Return(XYZ)); 

Le problème est que, grâce à ObserveOnDispatcher, le délégué subscribe n'est jamais exécuté.

J'ai vu un code avec DispatcherFrame et PushFrame, mais le problème est que je ne sais pas « où », je peux appeler

frame.Continue = false; 

Répondre

5

Vous pouvez essayer

var frame = new DispatcherFrame(); 
Dispatcher.CurrentDispatcher.BeginInvoke(
    DispatcherPriority.Background, 
    new Action(() => frame.Continue = false)); 
Dispatcher.PushFrame(frame); 
+0

Désolé, mais ce code ne compile même pas. si je change à: Dispatcher.CurrentDispatcher.BeginInvoke ( \t \t \t \t DispatcherPriority.Background, \t \t \t \t nouvelle DispatcherOperationCallback (o => \t \t \t \t \t \t \t \t \t \t \t \t \t { \t \t \t \t \t \t \t \t \t \t \t \t \t \t frame.Continue = false; \t \t \t \t \t \t \t \t \t \t \t \t \t \t return null; // ou renvoie null; \t \t \t \t \t \t \t \t \t \t \t \t \t})); Je reçois l'exception suivante: System.Reflection.TargetParameterCountException: Incompatibilité du nombre de paramètres. –

+0

Désolé - j'aurais dû essayer de compiler mon code en premier. Essayez la version mise à jour. –

+0

Merci, travaille maintenant comme un charme. –