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

rbe*_*amy 4 c# autofixture

这是我的班级:

public MyClass {
  public int Id { get; private set; }
  public SetAssignableId (int id) {
    this.Id = id;
  }
}
Run Code Online (Sandbox Code Playgroud)

我想让AutoFixture通过SetAssignableId或私人设置器设置Id.

Mar*_*ann 5

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

在问题板上有一个未完成的要求,使其更加可定制 - 如果您仔细阅读工作项,您将看到有一个请求可以填充受保护的设置者.

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

fixture.Customize<MyClass>(c => 
    c.Do(mc => 
        mc.SetAssignableId(fixture.CreateAnonymous<int>())));
Run Code Online (Sandbox Code Playgroud)