【问题标题】:Stubbing a property twice with rhino mocks用 rhino mocks 两次存根属性
【发布时间】:2011-08-24 06:47:45
【问题描述】:

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

//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

【问题讨论】:

标签: c# mocking rhino-mocks


【解决方案1】:

使用Expect 代替StubGenerateMock 代替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);

【讨论】:

  • 不适用于方法(至少在我使用Arg&lt;T&gt;作为参数的情况下)。
  • 也许您可以创建一个新问题来说明您的具体问题?
  • 我认为提问者想要将一些值设置为默认值,然后为每个测试更改其中一个值。 IE。不是排队一个新的值,而是改变它。
猜你喜欢
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
相关资源
最近更新 更多