2017-02-20 132 views
1

我有一个私人设置属性的类,我想与犀牛嘲笑一起取出。 但是,当我尝试这样做时,它会给我一个运行时错误。我是新来使用犀牛制品,所以我必须缺少的东西在这里...用犀牛模拟一个只读属性

public interface IView 
{ 
    bool isDialog { get; } 
} 

[TestMethod] 
public void SomeTest() 
{ 
    var m_MockRepository = new MockRepository(); 

    Helper.SetDialog(m_MockRepository,false); 

    //Asserts and such 
} 

static class Helper 
{ 

    internal static SetDialog(MockRepository mockRepository, bool isDialog) 

    var viewStub=mockRepository.stub<IView>(); 
    viewStub.Stub(x=>x.isDialog).Return(isDialog); 
} 

的给了我一个堆栈跟踪时,执行线viewStub.Stub(x=>x.isDialog).Return(isDialog)

System.Reflection.TargetInvocationException:异常已被抛出调用的目标。 ----> System.Reflection.TargetInvocationException:调用的目标引发了异常。 ----> System.NullReferenceException:未将对象引用设置为对象的实例。

回答

0

问题是你在混合Rhino Mocks的不同语法:Record-Replay和AAA(Arrange,Act,Assert),并且模拟处于无效状态。
它应该工作(根据我的小试),如果不是使用MockRepository对象,你可以使用下列内容:

var viewStub = MockRepository.GenerateStub<IView>();