HotChocolate v11迁移后DataLoaderOptions无AutoDispatch属性问题求解
HotChocolate v11 DataLoader单元测试调度配置解决方案
HotChocolate v11重构了DataLoader的调度体系,直接移除了DataLoaderOptions中的AutoDispatching配置项,所有批次任务的触发逻辑统一交由IBatchScheduler实例管控,你只需要在原有代码基础上补充手动调度逻辑即可解决加载不触发的问题。
正确的单元测试写法如下:
var scheduler = new BatchScheduler(); var loader = new CompanySettingDataLoader(scheduler, api, new DataLoaderOptions<string> { // 无需配置对应原AutoDispatching的参数 }); // 先发起加载请求,此时任务会进入待调度队列 var resultTask = loader.LoadAsync("Param2", CancellationToken.None); // 手动触发调度器执行所有待处理的DataLoader批次 await scheduler.DispatchAsync(); // 获取最终加载结果 var result = await resultTask;
其他注意事项:
- 单个测试用例存在多次DataLoader加载需求时,可根据需要多次调用
DispatchAsync,每次调用都会执行当前队列中所有待执行的批次任务 DataLoaderOptions中除AutoDispatching外的其他配置(如缓存开关、最大批次容量等)可保留v10版本的原有设置,无需调整- 集成测试场景下如果搭配HotChocolate官方的查询执行引擎使用,框架会自动完成调度器注入与调度触发,无需手动调用
DispatchAsync
内容的提问来源于stack exchange,提问作者David LECERF
相关产品推荐
相关产品推荐

