2010-11-07 99 views
1

异步回调值我有单元测试方法,它调用方法与回调获取单元测试调试

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

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

这是我的方法签名

/// <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) 

我如何测试这个从回调获得价值?目前我的结果总是为空,这是合乎逻辑的。

回答

3

使用事件等待,直到异步方法完成:

[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); 
} 

也改变user.Emailresult.Email。怀疑你想检查result变量。

+0

哇,它的工作。感谢您的快速和很好的回答 – nemke 2010-11-07 07:06:19

+0

是的,这是我的结果输入错误,所以我更新了代码 – nemke 2010-11-07 07:24:16