AutoFixture - 如何调用方法,如何设置autoproperty的私有setter?

时间:2011-04-19 20:55:47

标签: c# autofixture

这是我的班级:

public MyClass {
  public int Id { get; private set; }
  public SetAssignableId (int id) {
    this.Id = id;
  }
}

我想让AutoFixture通过SetAssignableId或私有设置器设置Id。

1 个答案:

答案 0 :(得分:5)

今天无法使用AutoFixture调用私人设定器。虽然它在内部使用反射,但它在设计上尊重类型的公共API。

有一个outstanding request on the Issue Board可以让它更加可定制 - 如果你仔细阅读工作项,你会发现有一个请求可以填充受保护的setter。

但是,通过给出的示例,可以调用SetAssignableId方法。像这样的定制应该可以解决问题:

fixture.Customize<MyClass>(c => 
    c.Do(mc => 
        mc.SetAssignableId(fixture.CreateAnonymous<int>())));