是否可以将 Moq 对象传递给 C# class 构造函数?

Is it possible to pass a Moq object to a C# class constructor?

我有 MyClass class,它在构造函数中接收 TheirClass 的一个实例。 MyClass 在 MyMethod 函数中使用实例的 属性 值,像这样

public  class MyClass
{
  ITheirClass theirClass;

 public MyClass( ITheirClass TheirClass)
   {
    theirClass =TheirClass;
   }

  public MyMethod ()
   {
      if (theirClass.TheirProperty) return;
   }
}

我想为 MyClass 和 MyClass.MyMethod 函数创建一个单元测试。我创建了一个这样的 Moq 对象

 var MoqTheirClass = new Mock<ITheirClass>();
 MoqTheirClass.SetupGet(p => p.TheirProperty).Returns(false);

但是,MoqTheirClass 对象不能转换为 ITheirClass 类型,我无法将它传递给 MyClass 构造函数。

问题是如何使用预设 TheirClass.TheirProperty 值创建 Moq TheirClass 对象并将其传递给 MyClass 构造函数?

还有其他方法可以对MyClass.MyMethod函数进行单元测试吗?

您需要像这样从 MoqTheirClass 对象传入 Object 属性:

MyClass myClass = new MyClass(MoqTheirClass.Object);