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