Rhino Mock部分模拟中的存根设置器



我在这个问题中遵循公认的答案,但我得到了一个NullReferenceException

我需要的是有一个部分模拟存根属性(getter和setter)表现得像一个存根(作为一个简单的自动属性)。目前我可以存根getter,但不能存根setter。

这可能吗?

这是一个简单的例子,我希望它有助于解释我的问题。
public class SomeClass
{
 public virtual string SomeProperty
 {
  get{ return SomeMethodDependingOnDBOrAspSession(); }
  set{ SomeMethodDependingOnDBOrAspSession(value); } // I want to avoid calling this setter implementation
 }
}
var partialMock = MockRepository.GeneratePartialMock<SomeClass>();
partialMock.Stub(p => p.SomeProperty); // I want SomeProperty to behave as an automatic property

当使用PartialMock时,您可以通过使用Rhino mock的PropertyBehavior功能获得自动实现的属性行为。考虑到你问题中的类,下面的nunit测试对我来说通过了。

[Test]
public void TestPartialMock()
{
  var someClass = MockRepository.GeneratePartialMock<SomeClass>();
  someClass.Stub(x => x.SomeProperty).PropertyBehavior();
  string val = "yo!";
  Assert.DoesNotThrow(() => someClass.SomeProperty = val);
  Assert.AreEqual(val, someClass.SomeProperty);
}

如果你不需要PartialMock,你可以使用Stub,它默认具有属性行为。您只需将测试的前两行替换为:

var someClass = MockRepository.GenerateStub<SomeClass>();

相关内容

  • 没有找到相关文章

最新更新