产生子清单

时间:2018-08-15 11:29:59

标签: c# .net integration-testing xunit autofixture

我有以下两个课程:

public class Blog
{
    public Blog()
    {
        Posts = new HashSet<Post>();
    }

    public int BlogId { get; set; }
    public string Name { get; set; }
    public ICollection<Post> Posts { get; private set; }
}

public class Post
{
    public int PostId { get; set; }
    public int BlogId { get; set; }
    public string Uri { get; set; }
    public Blog Blog { get; set; }
}

我尝试使用AutoFixture生成我想在测试中使用的样本数据。

var blogs = new List<Blog>(new Fixture().Build<Blog>()
      .Without(x => x.BlogId)
      .CreateMany(10));

但是帖子的收藏集为空。

问题是我如何使用自动修复生成博客和相应的帖子,比方说,每10个博客就有10个帖子。

1 个答案:

答案 0 :(得分:1)

  

但是帖子的收藏集为空。

不完全; Posts集合为,因为它们在Blog构造函数中初始化为空HashSet。

  

如何使用自动修复功能生成博客和相应的帖子

fixture.AddManyTo块中使用Do

var fixture = new Fixture();
var blogs = fixture.Build<Blog>()
    .Without(b => b.BlogId)
    .Do(b => fixture.AddManyTo(b.Posts, 10))
    .CreateMany(10);

这将创建10个Blog对象,每个对象在Post集合中具有10个Posts对象。