模拟稍后将实例化的接口

本文关键字:接口 实例化 模拟 | 更新日期: 2023-09-27 18:00:05

下面是我的代码。我正在使用Moq库。而不是让Moq为我创建一个实例。我需要转换成一个类型,然后传递给某人来创建实例。我该怎么做?

var mock = new Mock<IFoo>();
mock.Setup(foo => foo.Bar()).Returns(true);
// Test the actual method
DoSomething(mockedIStateProvider.Object.GetType());

// Not my code, it's a 3rd party library, not allowed to change
public void DoSomething(Type type)
{
    Activator.CreateInstance(type);
    ...
    ...
}

模拟稍后将实例化的接口

您不能使用Moq。Activator总是会创建一个你无法访问的新实例,这样你就无法设置你想要的嘲笑行为。

话虽如此,您可能可以通过编写自己的存根实现来获得您想要的行为,该实现将始终执行您想要的操作。