繁体   English   中英

RhinoMock - 递归模拟

[英]RhinoMock - Recursive mocking

我无法让递归模拟工作。

SomeClass someMOck = MockRepository.GenerateMock<SomeClass>();

//SomeClass is having another class as a property.

someMock.Stub(x => x.Manager.SomeData).Return("Hello");

在运行时它会抛出一个错误。

System.InvalidOperationException:上一个方法'SomeClass.get_Manager();' 需要返回值或抛出异常。

我正在使用3.6 build 21。

任何想法?

这是因为您没有为someeClass.Manager指定的值。

您将需要模拟Manager类并将其设置为someeClass.Manager的返回值。

SomeClass someMock= MockRepository.GenerateMock<SomeClass>();
Manager managerMock= MockRepository.GenerateMock<Manager>(); 

managerMock.Stub(x => x.SomeData).Return("Hello");
someMock.Stub(x => x.Manager).Return(managerMock);

但另一件事与代码的设计有关。 Demeter法则规定您不应在代码中使用嵌套的property.property。 您应该只传递真正必要的信息,并确保使用传入的所有内容。 那么是否真的有必要访问一个完整的Manager对象才能获得SomeData

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM