2010-11-07 13 views
1

je suis arrivé méthode UnitTest qui appelle la méthode avec rappelObtenir la valeur de rappel Async unittest débogage

[Test] 
    public void GetUserAsyncTest() 
    { 
     User result; 
     _restTest.GetUserAsync((user) => 
            { 
             result = user; 
            }); 

     Assert.AreEqual("xy", result.Email); 
    } 

Ceci est ma signature méthode

/// <summary> 
    /// Retrieve the User details for the currently authenticated User 
    /// </summary> 
    /// <param name="callback">Method to call upon successful completion</param> 
    public void GetUserAsync(Action<User> callback) 

Comment puis-je tester cela et obtenir la valeur de rappel? Actuellement, mon résultat est toujours nul, ce qui est logique.

Répondre

3

Utilisez un événement d'attendre jusqu'à ce que la méthode async est terminée:

[Test] 
public void GetUserAsyncTest() 
{ 
    //Action<User> user = null; 
    User result; 
    ManualResetEvent waitEvent = new ManualResetEvent(false); 

    _restTest.GetUserAsync((user) => 
    { 
     result = user; 
     waitEvent.Set(); 
    }); 

    waitEvent.WaitOne(); 

    Assert.AreEqual("xy", result.Email); 
} 

a également changé user.Email-result.Email. Vous soupçonnez que vous voulez vérifier la variable result.

+0

Wow, ça a marché. Merci pour la réponse rapide et excellente – nemke

+0

Oui, c'était mon erreur de frappe pour le résultat, donc j'ai mis à jour le code – nemke