Получить значение асинхронного обратного вызова в отладке unittest - PullRequest
1 голос
/ 07 ноября 2010

Я получил метод 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)

Как я могу проверить это и получить значение от обратного вызова? В настоящее время мой результат всегда нулевой, что логично.

1 Ответ

3 голосов
/ 07 ноября 2010

Используйте событие, чтобы дождаться завершения асинхронного метода:

[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.

...