c# – 模拟一个在RhinoMocks中接受委托的方法

前端之家收集整理的这篇文章主要介绍了c# – 模拟一个在RhinoMocks中接受委托的方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下课程: @H_404_2@public class HelperClass { HandleFunction<T>(Func<T> func) { // Custom logic here func.Invoke(); // Custom logic here } // The class i want to test public class MainClass { public readonly HelperClass _helper; // Ctor MainClass(HelperClass helper) { _helper = helper; } public void Foo() { // Use the handle method _helper.HandleFunction(() => { // Foo logic here: Action1(); Action2(); //etc.. } } }

我只想测试MainClass.我在测试中使用RhinoMocks来模拟HelperClass.
问题是,虽然我对测试HandleFunction()方法不感兴趣,但我有兴趣检查Action1,Action2和其他在调用时发送给HandleFunction()的动作.
我如何模拟HandleFunction()方法,同时避免它的内部逻辑,调用作为参数发送给它的代码

解决方法

因为您的被测单元很可能需要在继续之前调用委托,所以您需要从模拟中调用它.调用辅助类的实际实现和模拟实现之间仍然存在差异.模拟不包括这个“自定义逻辑”. (如果你需要,不要嘲笑它!) @H_404_2@IHelperClass helperMock = MockRepository.GenerateMock<IHelperClass>(); helperMock .Stub(x => x.HandleFunction<int>()) .WhenCalled(call => { var handler = (Func<int>)call.Argument[0]; handler.Invoke(); }); // create unit under test,inject mock unitUnderTest.Foo();

猜你在找的C#相关文章