测试异步方法返回值

时间:2019-05-06 16:23:16

标签: c# async-await nunit

我有两个异步函数,这些函数位于外部供应商提供的dll中,并且正在尝试为此编写单元测试。

实现其中一种方法(创建方法),以使其创建会话并执行该会话。 另一个方法(更新事件方法)的实现方式是,它注册一个事件,并在第一个方法执行时连续返回create方法的当前状态/执行进度。

我能够使用Subscriber模式测试等效的打字稿代码。 我首先注册事件(使用更新事件方法)>订阅>在浏览器控制台上获取输出。然后,我调用create方法,而update event方法将在执行create方法时返回进度。

当两种方法都不同步时,如何在C#中执行此操作?

这是我的考试班

public class FlashTest : BaseTest
{
    public FlashSessionController flashSessionController;
    public FlashSessionResource flashSessionResourceCreate;
    public FlashSessionResource flashSessionResourceUpdate;

    public FlashTest()
    {
        FlashSessionController flashSessionControllerctor = new FlashSessionController(properties);
        flashSessionController = flashSessionControllerctor;
    }

    FlashSession flashSession = new FlashSession
    {
        id = Guid.NewGuid().ToString(),
        ecuId = "513ac359-44a9-47a4-ab7c-dc6ba3e287e6"
    };

    [Test, RequiresThread]
    public async Task FlashSessionWorkflow()
    {
        await UpdateEventFlash(flashSessionController);
        await CreateFlash(flashSessionController);
    }


    public async Task CreateFlash(FlashSessionController flashSessionController)
    {
        flashSessionResourceCreate = await flashSessionController.createFlashSession(flashSession);
    }

    public async Task UpdateEventFlash(FlashSessionController flashSessionController)
    {
        flashSessionResourceUpdate = await flashSessionController.updateEventFlashSession();
    }

}

以下是上面的测试中使用的程序集类:

public class FlashSessionController
{
    public FlashSessionController(IAPIProperties properties);

    public event EventHandler<ControllerEventArgs<FlashSessionResource>> OnMessage;
    public event EventHandler<ControllerEventArgs<ErrorDescriptor>> OnError;

    public Task<FlashSessionResource> createFlashSession(FlashSession flashsession);

    public Task<FlashSessionResource> updateEventFlashSession();
}

0 个答案:

没有答案