使单元测试仅在调用回调时通过

本文关键字:回调 调用 单元测试 | 更新日期: 2023-09-27 18:10:27

我试图单元测试一点代码,以确保调用回调,但似乎即使没有"Assert"-调用的方法,它将通过。考虑下面的代码示例:

public void Show_ShowSomeAdFormat_CallbackShouldBeInvoked()
{
    AdManager adManager = new AdManager();
    adManager.Show<VideoTestAdFormat>((response) =>
    {
        //Assert.Pass(); <--- With or without this, the test will pass. 
        //I need it to only pass if it reaches this. How is it done?
    });
}

如果你看了评论,我想你会明白我想要什么。

谢谢!

使单元测试仅在调用回调时通过

使用捕获的bool

public void Show_ShowSomeAdFormat_CallbackShouldBeInvoked()
{
    AdManager adManager = new AdManager();
    bool callbackInvoked = false;
    adManager.Show<VideoTestAdFormat>((response) => callbackInvoked = true);
    // If the callback is invoked asynchronously,
    // you'll need a way to wait here for Show to complete.
    Assert.IsTrue(callbackInvoked);
}
编辑:

如果你正在使用。net 4,你可能会让Show返回一个Task,当Show完成工作时完成。在早期的。net版本中,您可以返回ManualResetEvent。"Return"可以是返回值,也可以是带out参数的Show的重载。