模拟一个稍后将实例化的接口?

时间:2014-04-24 23:53:13

标签: c# mocking moq

以下是我的代码。我正在使用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);
    ...
    ...
}

1 个答案:

答案 0 :(得分:1)

你不能与Moq合作。 Activator将始终创建一个您无法访问的新实例,因此您将无法设置所需的模拟行为。

话虽这么说,你可以通过编写自己的存根实现来获得你想要的行为。