gpt4 book ai didi

c# - 为类型创建 AutoFixture 样本生成器

转载 作者:可可西里 更新时间:2023-11-01 08:21:24 24 4
gpt4 key购买 nike

我正在为特定类型创建一个 AutoFixture 样本生成器,在本例中为 System.Data.DataSet。生成器将返回一个 FakeDataSet,这是一个用于测试的自定义 DataSet

以下内容不起作用,dataSet 始终返回 null,即使正在请求 DataSet(我可以通过深入了解 request 属性)。

public class DataSetBuilder : ISpecimenBuilder
{
public object Create(object request, ISpecimenContext context)
{
var dataSet = request as DataSet;
if (dataSet == null)
{
return new NoSpecimen(request);
}

return new FakeDataSet();
}
}

这种变体确实有效,但似乎过于复杂。感觉好像有更好的方法来完成同样的事情,而我只是错过了一些东西。

public class DataSetBuilder : ISpecimenBuilder
{
public object Create(object request, ISpecimenContext context)
{
var seededRequest = request as SeededRequest;
if (seededRequest == null)
{
return new NoSpecimen(request);
}

var requestType = seededRequest.Request as Type;
if (requestType == null)
{
return new NoSpecimen(request);
}

if (requestType.Name != "DataSet")
{
return new NoSpecimen(request);
}

return new FakeDataSet();
}
}

最佳答案

这样做会更简单:

fixture.Register<DataSet>(() => new FakeDataSet());

但如果您使用 SpecimenBuilder,这也应该有效:

public class DataSetBuilder : ISpecimenBuilder
{
public object Create(object request, ISpecimenContext context)
{
var t = request as Type;
if (typeof(DataSet).Equals(t))
return new FakeDataSet();

return new NoSpecimen(request);
}
}

就我个人而言,我会使用第一个选项。

关于c# - 为类型创建 AutoFixture 样本生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16322697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com