我正在按照这个question中被接受的答案,但我得到了一个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发布于 2013-05-31 22:15:14
在使用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>();https://stackoverflow.com/questions/16592440
复制相似问题