C# 存根只读属性的行为

C# 存根只读属性的行为,c#,rhino-mocks,stub,C#,Rhino Mocks,Stub,我想在Rhinomock中为这个接口创建一个存根。 我有一个只读属性,每次调用IncrementValue()方法时,我都想增加他的值。这可能吗?我不想为此存根创建一个新类。您可以给rhino mocks一个lambda,以便在调用函数get时运行。这个lambda可以增加一个计数器。你可以找到一个例子我有一个与Jay相似的建议,只是比较短。不确定这是否有一些缺点,所以 public interface ICell { int Value{get;}

我想在Rhinomock中为这个接口创建一个存根。
我有一个只读属性,每次调用IncrementValue()方法时,我都想增加他的值。这可能吗?我不想为此存根创建一个新类。

您可以给rhino mocks一个lambda,以便在调用函数get时运行。这个lambda可以增加一个计数器。你可以找到一个例子

我有一个与Jay相似的建议,只是比较短。不确定这是否有一些缺点,所以

public interface ICell
        {
            int Value{get;}

            void IncrementValue();
        }
int count=0;
var mock=MockRepository.GenerateStub();
mock.Stub(p=>p.Value).WhenCalled(a=>a.ReturnValue=count).Return(42);
mock.Stub(p=>p.IncrementValue())。调用时(a=>{
计数=(int)计数+1;
});

Return(42)表示“Value返回某物,不要抛出”,当called(a=>a.ReturnValue=count)覆盖返回vale 42的当前计数值时

我也想到了这个:

   int count = 0;

    var mock = MockRepository.GenerateStub<ICell>();
    mock.Stub(p => p.Value).WhenCalled(a => a.ReturnValue = count).Return(42);
    mock.Stub(p => p.IncrementValue()).WhenCalled(a => {
        count = (int)count+1; 
    });

在你的帮助之前,我对WhenCall方法的行为感到困惑。。。但我认为你的方法比这个好

我想马丁的问题是增加什么。。。接口只有get属性,没有set属性
cell.Stub(c => c.Value).WhenCalled(m => m.ReturnValue = cell.GetArgumentsForCallsMadeOn(c => c.IncrementValue()).Count).Return(0);