gpt4 book ai didi

unit-testing - 如何使用最小起订量生成虚假数据进行单元测试?

转载 作者:行者123 更新时间:2023-12-01 11:04:29 26 4
gpt4 key购买 nike

我需要生成一些数据来对我的存储库进行单元测试。我正在使用循环来生成对象列表,请参阅下面的代码。我了解到 moq 是一个很棒的模拟库,我可以使用 moq 来生成它,我该怎么做?

public IQueryable<Category> GetCategories()
{
IList<Category> result = new List<Category>();

for (int i = 1; i <= 2; i++)
{
Category c = new Category();
c.ID = i;
c.Name = "Parent" + i.ToString();
c.ParentID = 0;

for (int x = i*10; x < i*10+5; x++)
{
Category sub = new Category();
sub.ID = x;
sub.Name = "Sub" + x.ToString();
sub.ParentID = i;
result.Add(sub);
}

result.Add(c);
}

return result.AsQueryable<Category>();
}

最佳答案

您不能使用 Moq 创建数据,但可以使用 AutoFixture :

public IQueryable<Category> GetCategories()
{
return fixture.CreateMany<Category>().AsQueryable();
}

但是,这不会为您提供分层树。它将返回这样的对象:
Object 1:
- ID = 0
- ParentID = 1
Object 2:
- ID = 2
- ParentID = 3

等等。

如果你真的需要这个分层数据,你需要使用以下代码:
public IQueryable<Category> GetCategories()
{
var result = new List<Category>();

// Create the parents
var parents = fixture.Build<Category>()
.Without(x => x.ParentID)
.CreateMany());
result.AddRange(parents);

result.AddRange(parents.SelectMany(p => fixture.Build<Category>()
.With(x => x.ParentID, p.ID)
.CreateMany()));

return result.AsQueryable();
}

这将为每个父级添加多个子级和多个子级。

关于unit-testing - 如何使用最小起订量生成虚假数据进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7401309/

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