4

这是我的课:

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

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

4

1 回答 1

5

目前无法使用 AutoFixture 调用私有设置器。尽管它在内部使用反射,但在设计上它尊重类型的公共 API。

问题委员会上有一个未完成的请求,以使其更加可定制 - 如果您仔细阅读工作项,您会看到有一个请求启用填充受保护的设置器。

但是,根据给出的示例,当然可以调用 SetAssignableId 方法。像这样的自定义应该可以解决问题:

fixture.Customize<MyClass>(c => 
    c.Do(mc => 
        mc.SetAssignableId(fixture.CreateAnonymous<int>())));
于 2011-04-19T21:17:13.587 回答