在unittest debug中获取异步回调值

时间:2010-11-07 06:51:36

标签: c# delegates callback

我得到了一个用回调

调用方法的UnitTest方法
    [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)

如何测试这个并从回调中获取价值?目前我的结果始终为null,这是合乎逻辑的。

1 个答案:

答案 0 :(得分: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.Email更改为result.Email。怀疑您要查看result变量。