Oğu*_*pçu 3 c# unit-testing autofixture
当我使用"with"方法设置属性时,它会在同名的嵌套对象上保留null所有属性.
(我使用autofixture的最新版本为3.0.8)
public class Something {
public string Id { get; set; }
public IList<Something> Things { get; set; }
}
var obj = Fixture.Build<Something>().With(q => q.Id, "something").CreateAnonymous()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,obj.Id =="something"等于true,但obj.Things [0] .Id == null equalsto true.
我认为有一个错误或错误; 有人可以帮忙吗?
Nik*_*nis 13
默认情况下,AutoFixture不会创建实例,Something
因为图形包含循环引用.
您可以做的是在Fixture
实例上添加/删除适当的行为:
fixture.Behaviors.Remove(new ThrowingRecursionBehavior());
fixture.Behaviors.Add(new OmitOnRecursionBehavior());
Run Code Online (Sandbox Code Playgroud)
您现在可以创建一个实例,Something
但Things
现在省略了属性(循环引用).
这就是为什么你得到一个空列表..
但是,您可以进一步自定义创建算法:
var obj = fixture.Build<Something>()
.With(x => x.Id,
"something")
.With(x => x.Things,
fixture.CreateMany<Something>().ToList())
.Create();
Run Code Online (Sandbox Code Playgroud)