存根readOnly属性的行为

Mar*_*ero 5 c# rhino-mocks stub

public interface ICell
        {
            int Value{get;}

            void IncrementValue();
        }
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*kov 3

我和杰伊有类似的建议,只是更短。不确定这是否有一些缺点。

   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; 
    });
Run Code Online (Sandbox Code Playgroud)

Return(42) 放在那里是为了表示“Value 返回一些东西,不要抛出”,并且 WhenCalled(a => a.ReturnValue = count) 用计数的当前值覆盖返回值 42。