c# - AutoFixture:确保每个枚举元素至少使用一次
问题描述
考虑以下模型
public class CalculatedValue
{
//...
public ItemsChoiceType[] ItemsElementName { get; set; }
}
public enum ItemsChoiceType
{
Value1,
Value2,
//...
ValueN
}
下面的代码片段会确保每个枚举值至少出现一次吗?如果没有,什么是更好(更明确)的方法?我的enum
包含超过 200 个元素...
var fixture = new Fixture();
var fake = fixture.Create<CalculatedValue>();
var itemsChoiceTypeElements = Enum.GetNames(typeof(ItemsChoiceType)).Length;
fake.ItemsElementName = fixture.CreateMany<ItemsChoiceType>(itemsChoiceTypeElements).ToArray();
解决方案
var calculatedValue = new Fixture().Create<Generator<CalculatedValue>>();
fixture.Customize<CalculatedValue>(c => c.Without(x => x.ItemsElementName));
fixture.Customize<IEnumerable<CalculatedValue>>(
c => c.FromFactory(
() => Enum.GetValues(typeof(ItemsChoiceType)).Cast<ItemsChoiceType>()
.Select(s => calculatedValue.First(u => u.ItemsElementName == s))));
var calculatedValues = fixture.Create<IEnumerable<CalculatedValue>>();
推荐阅读
- r - 如何从 R 中的初始组中找到后续组之间的值变化?
- ruby-on-rails - Rails 6:secrets.yml 未在 Mac 上加载,但可在 Ubuntu 上运行
- ios - 如何在不将父屏幕“转换”为卡片的情况下打开模式?
- angular - Jest 无法加载 Primeng css 文件
- c++ - 在 for 循环中跳过迭代
- python - 在内存中使用 typehint 动态创建函数
- html - 表格列宽被忽略
- c# - Mongo C# Aggregate 在 Lookup foreignField 中将 ObjectId 转换为字符串
- firebase - Flutter 中的文本识别使用 Firebase 的 ML Kit 是否可以在文本为阿拉伯语时进行?
- c# - 摆脱表达式树中的常量表达式以用作 Entity Framework Core 全局查询过滤器