3

我有简单的课

public class Simple
{
    public virtual int VirtualProperty { get; set; }
}

当我跑步时(FakeItEasy.1.13.1)

var strict = A.Fake<Simple>(options => options.Strict());
A.CallTo(() => strict.VirtualProperty).CallsBaseMethod();
strict.VirtualProperty = 999;

我收到一个错误

Call to non configured method "set_VirtualProperty" of strict fake.

我必须

var strict = A.Fake<Simple>(options => options.Strict());
A.CallTo(strict).Where(a => a.Method.Name == "get_VirtualProperty").CallsBaseMethod();
A.CallTo(strict).Where(a => a.Method.Name == "set_VirtualProperty").CallsBaseMethod();
strict.VirtualProperty = 999;

CallBaseMethod () 是否适用于虚拟财产?我究竟做错了什么?

4

1 回答 1

1

更新:由于 2.0.0 已经发布,在某些情况下有一种更方便的方式来配置属性设置器

随着在FakeItEasy Issue 175上对此的更多了解,很明显真正的障碍是A.CallTo(() => strict.VirtualProperty).CallsBaseMethod()配置属性 getter,而不是 setter。在该配置之后,get进行的调用strict.VirtualProperty将调用基本方法(属性)。

但是,没有方便的方法来配置属性setter。您所拥有的解决方法几乎是最好的。

于 2013-10-03T17:29:03.833 回答