【问题标题】:Stubbing a read only property with Rhino Mock使用 Rhino Mock 存根只读属性
【发布时间】:2017-02-20 10:42:59
【问题描述】:

我有一个带有私有 set 属性的类,我想用 rhino mocks 将其存根。 但是,当我尝试这样做时,它给了我一个运行时错误。我是使用 Rhino Mocks 的新手,所以我必须在这里遗漏一些东西......

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=&gt;x.isDialog).Return(isDialog)行时给我一个堆栈跟踪

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

【问题讨论】:

    标签: c#-4.0 rhino-mocks


    【解决方案1】:

    问题在于您混合了 Rhino Mocks 的不同语法:Record-Replay 和 AAA(Arrange、Act、Assert),而 Mock 处于无效状态。
    它应该可以工作(基于我的小测试),如果不使用 MockRepository 对象,您将使用以下内容:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      相关资源
      最近更新 更多