我想为NLog的LogLevel类型创建自定义。实例可以通过FromOrdinal静态方法创建。
我想将用于创建的序数限制在范围(0..5)。 请注意,我不想使用生成器自定义整个夹具(因为其他整数可能更大)。
以下是我尝试使用的代码:
class NLogCustomization : ICustomization
{
public void Customize(IFixture fixture)
{
fixture.Customize<NLog.LogLevel>(
c => c.FromFactory(() =>
{
var ordinal = this.nlogOrdinalLevelFactory.Create<int>(); //Throws invalid cast exception
return NLog.LogLevel.FromOrdinal((int)ordinal);
}));
}
private readonly ISpecimenBuilder nlogOrdinalLevelFactory = new RandomNumericSequenceGenerator(0,5);
}
不幸的是,上面的代码会抛出InvalidCastException。 我在这里做错了什么?
我正在使用3.19.1版。
答案 0 :(得分:1)
要直接使用RandomNumericSequenceGenerator和任何其他ISpecimenBuilder
,请使用ISpecimenBuilder界面:
object Create(object request, ISpecimenContext context);
在此示例中,代替Create<T>
执行:
fixture.Customize<LogLevel>(c => c.FromFactory(() =>
{
var ordinal = this.nlogOrdinalLevelFactory
.Create(typeof(int), new SpecimenContext(fixture));
return NLog.LogLevel.FromOrdinal((int)ordinal);
}));