我正在创建单元测试,以帮助构建一些代码,该代码将接受来自我的控制器的入站请求并排队(如果需要)。
在我的单元测试中,我希望两行代码几乎同时触发,尽管这两次调用之间有2秒的延迟。这允许触发逻辑的第一个分支,然后在第二个调用中,由于已经看到了传递的数据,使用备用逻辑分支。
我已经接近目标,但感觉有些混乱。我正在使用以下内容,它会立即传递我的第一个调用,并继续执行随后的代码行。
然而,单元测试在第一次调用完成之前就已经结束,这导致进程被终止。唯一允许第一次调用完成的方法是添加一个
我明白为什么会这样,因为我实际上已经交出了调用,没有期望有响应返回。我不想开始使用任务延迟,我相信这只是我对异步编程理解不够深刻的问题 :o)。
在我的单元测试中,我希望两行代码几乎同时触发,尽管这两次调用之间有2秒的延迟。这允许触发逻辑的第一个分支,然后在第二个调用中,由于已经看到了传递的数据,使用备用逻辑分支。
我已经接近目标,但感觉有些混乱。我正在使用以下内容,它会立即传递我的第一个调用,并继续执行随后的代码行。
Task.Factory.StartNew(() => stubbedQueueHandler.QueueProcessor(setupModel));
Thread.Sleep(2000);
//second call
stubbedQueueHandler.QueueProcessor(setupModel);
await Task.Delay(10000);
然而,单元测试在第一次调用完成之前就已经结束,这导致进程被终止。唯一允许第一次调用完成的方法是添加一个
await Task.Delay()
语句即可解决问题。我明白为什么会这样,因为我实际上已经交出了调用,没有期望有响应返回。我不想开始使用任务延迟,我相信这只是我对异步编程理解不够深刻的问题 :o)。