所有返回Task.FromResult()的async Task方法是否同步执行?(Blazor测试场景)
Blazor Server bUnit测试中异步方法的执行逻辑
当你的模拟服务通过Task.FromResult()返回静态数据时,相关异步代码的执行逻辑如下:
- 执行
_organization = await query.FirstOrDefaultAsync();时,因为FirstOrDefaultAsync()返回的是已完成状态的Task,await会直接同步提取结果赋值给_organization,不会触发任何异步调度或线程切换。 - 整个
OnInitializedAsync()方法虽然标记为async Task,但在这种无真实异步操作的测试场景下,会完全同步执行,最终返回一个已完成的Task。 - bUnit会自动等待组件的异步生命周期方法执行完成,哪怕是这种同步完成的异步方法,你可以在组件渲染后直接断言页面内容,无需额外等待。
内容的提问来源于stack exchange,提问作者David Thielen
相关产品推荐
相关产品推荐

