You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RhinoMock:为同一类创建存根时保留原方法实现

当然支持!用Rhino Mocks的部分模拟就能搞定

完全不需要拆分SubClass的两个方法,Rhino Mocks的**部分模拟(Partial Mocks)**特性正好匹配你的需求——可以对指定方法创建存根返回测试数据,同时保留其他方法的原始实现逻辑。

具体实现步骤

  1. 创建SubClass的部分模拟实例:这种模拟会保留类中大部分方法的原始行为,只允许你修改指定方法的逻辑。
  2. 对MethodA()设置存根,指定测试返回值。
  3. 将这个模拟实例注入到MainClass中,执行测试即可——此时MainClass调用MethodA()会使用你设置的存根数据,调用MethodB()则会执行原始实现。

代码示例

// 1. 生成SubClass的部分模拟
var subClassPartialMock = MockRepository.GeneratePartialMock<SubClass>();

// 2. 为MethodA设置存根,返回自定义测试数据
subClassPartialMock.Stub(x => x.MethodA()).Return("测试用返回值");

// 3. 注入到MainClass中进行测试
var mainClassUnderTest = new MainClass(subClassPartialMock);
mainClassUnderTest.TargetMethod(); // 内部调用subClassPartialMock.MethodA()用存根,MethodB()走原始逻辑

注意事项

  • 确保SubClass不是密封类(sealed),且MethodA是虚方法(virtual)——Rhino Mocks需要通过生成代理子类的方式实现部分模拟,非虚方法或密封类无法被拦截修改。
  • 如果MethodB内部会调用MethodA,此时调用的也会是你设置的存根版本(因为MethodA是虚方法,代理类会拦截这个调用)。如果需要让MethodB内部调用原始的MethodA,可以通过CallOriginalMethod()方法调整,但这应该不是你的需求场景。

内容的提问来源于stack exchange,提问作者mche

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:57:39