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

如何用FakeItEasy伪造实现多个接口的类?

使用FakeItEasy伪造实现多接口的对象

你给出的代码写法本身是正确的,但可能因为版本或使用方式问题导致无法运行,以下是可行的解决方案及注意事项:

方法一:使用Implements方法链

FakeItEasy 2.0及以上版本支持通过Implements方法为伪造对象添加额外接口实现,代码如下:

// 伪造同时实现IFoo和IBar的对象
var fake = A.Fake<IFoo>(builder => builder.Implements<IBar>());

// 使用时可转换为对应接口类型
IFoo fooInstance = fake;
IBar barInstance = fake as IBar; // 或直接强制转换(IBar)fake

如果需要实现更多接口,继续链式调用Implements即可:

var fake = A.Fake<IFoo>(builder => builder.Implements<IBar>().Implements<IBaz>());

方法二:通过抽象类中转(兼容旧版本)

如果你的FakeItEasy版本低于2.0,可以先定义一个实现所有目标接口的抽象类,再伪造这个抽象类:

// 定义抽象类实现IFoo和IBar
public abstract class FooBarBase : IFoo, IBar { }

// 伪造该抽象类
var fake = A.Fake<FooBarBase>();

// 直接作为IFoo或IBar使用
IFoo foo = fake;
IBar bar = fake;

常见问题排查

  • 确认FakeItEasy版本:Implements方法是2.0版本新增的,若版本过低会报错,建议升级到最新稳定版。
  • 类型转换:伪造对象本身是动态生成的代理类,需要显式转换到对应的接口类型才能调用该接口的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:57:34