这是我的班级:
public MyClass {
public int Id { get; private set; }
public SetAssignableId (int id) {
this.Id = id;
}
}
我想让AutoFixture通过SetAssignableId或私有设置器设置Id。
答案 0 :(得分:5)
今天无法使用AutoFixture调用私人设定器。虽然它在内部使用反射,但它在设计上尊重类型的公共API。
有一个outstanding request on the Issue Board可以让它更加可定制 - 如果你仔细阅读工作项,你会发现有一个请求可以填充受保护的setter。
但是,通过给出的示例,可以调用SetAssignableId方法。像这样的定制应该可以解决问题:
fixture.Customize<MyClass>(c =>
c.Do(mc =>
mc.SetAssignableId(fixture.CreateAnonymous<int>())));