【发布时间】:2021-06-09 23:17:35
【问题描述】:
我有私有只读字段的课程
public class Bar
{
private readonly ICollection<Foo> somePrivateCollection = new HashSet<Foo>();
public IEnumerable<Foo> SomePublicCollection => somePrivateCollection;
public int z;
}
和
public class Foo
{
public int x;
}
我可以通过 GetField => SetValue 设置这个字段
[Fact]
public void someTest()
{
var fooObjects = new Faker<Foo>().Generate(1);
var barObject = new Faker<Bar>().RuleFor(t => t.z, f => f.Random.Int())
.Generate();
barObject.GetType()
.GetField("somePrivateCollection", System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance)
.SetValue(barObject, fooObjects);
}
但是如何使用相同的样式设置此字段
var barObject = new Faker<Bar>().RuleFor(t => t.z, f => f.Random.Int())
.RuleSetter("somePrivateCollection",fooObjects)
.Generate();
【问题讨论】:
-
为什么
somePrivateCollection需要直接更新?另外,为什么要创建一个假的具体类? -
@AndrewS 用于测试目的,测试使用相同功能将项目添加到列表的功能,我认为这不是一个好主意
标签: c# unit-testing bogus