代码之家  ›  专栏  ›  技术社区  ›  nemke Todd Stout

在unittest调试中获取异步回调值

  •  1
  • nemke Todd Stout  · 技术社区  · 14 年前

    我得到了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 回复  |  直到 13 年前
        1
  •  3
  •   Pieter van Ginkel    14 年前

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

    [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 变量。