Rhino Mocks如何对一个属性进行两次存根?

7

对于一些对象,我想创建默认存根以便常见属性包含值。但在某些情况下,我想覆盖我的默认行为。我的问题是,我是否可以以某种方式覆盖已经存根的值?

//First I create the default stub with a default value
var foo = MockRepository.GenerateStub<IFoo>();
foo.Stub(x => x.TheValue).Return(1);

//Somewhere else in the code I override the stubbed value
foo.Stub(x => x.TheValue).Return(2);

Assert.AreEqual(2, foo.TheValue); //Fails, since TheValue is 1

请参见https://dev59.com/93RA5IYBdhLWcg3w9irq。 - Ted
1个回答

0

使用Expect代替Stub,并使用GenerateMock代替GenerateStub将解决此问题:

//First I create the default stub with a default value
var foo = MockRepository.GenerateMock<IFoo>();
foo.Expect(x => x.TheValue).Return(1);

//Somewhere else in the code I override the stubbed value
foo.Expect(x => x.TheValue).Return(2);

Assert.AreEqual(1, foo.TheValue);
Assert.AreEqual(2, foo.TheValue);

3
在我的情况下(我使用Arg<T>作为参数),对于方法无法正常工作。 - Marek Dzikiewicz
也许您可以创建一个新的问题,说明您的具体问题? - Jeroen
4
我认为提问者想要将一些数值设置为默认值,然后在每次测试中更改其中一个数值。也就是说,不是排队等待新值,而是更改现有的值。 - Jørn Jensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接