You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求列表类的null替代方案:单元测试简化空列表模拟

解决方案

当然有合适的方案啦!你完全不需要手动创建空List实例,直接用框架提供的空序列工具就能搞定,还更高效。

两种推荐写法:

1. 使用 Enumerable.Empty<T>().AsQueryable()

Enumerable.Empty<MyClass>() 会返回一个只读的空泛型序列,本身是IEnumerable<MyClass>类型,调用AsQueryable()后就能转换成你需要的IQueryable<MyClass>,完美匹配GetAll<MyClass>()的返回类型,而且这个空序列是框架复用的单例,不会每次都分配新内存。

修改后的代码:

A.CallTo(() => _dataContext.GetAll<MyClass>()).Returns(Enumerable.Empty<MyClass>().AsQueryable());

2. 更直接的 Queryable.Empty<T>()(.NET Core 3.0+/NET 5+)

如果你用的是较新的.NET版本,可以直接用Queryable.Empty<MyClass>(),它会直接返回IQueryable<MyClass>类型的空序列,省去了调用AsQueryable()的步骤:

A.CallTo(() => _dataContext.GetAll<MyClass>()).Returns(Queryable.Empty<MyClass>());

这两种方式都满足你的需求:既避免了创建不必要的空列表,又保证返回的不是null,完全符合GetAll方法“返回为空或非空序列”的约定。

内容的提问来源于stack exchange,提问作者Kieran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:29:34