Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Moq冒充受保护的成员,能够直接呼叫他们_C#_Unit Testing_Moq - Fatal编程技术网

C# 使用Moq冒充受保护的成员,能够直接呼叫他们

C# 使用Moq冒充受保护的成员,能够直接呼叫他们,c#,unit-testing,moq,C#,Unit Testing,Moq,那么,有没有更好的方法用最小起订量来做类似的事情呢 public class Mom{ protected virtual Love DoLove(){ ... } } [TestFixture] public class MomTests{ class FakeMom:Mom{ public new Love DoLove(){ return base.DoLove(); } } [Test]

那么,有没有更好的方法用最小起订量来做类似的事情呢

public class Mom{

    protected virtual Love DoLove(){
        ...
    }
}

[TestFixture]
public class MomTests{

   class FakeMom:Mom{
      public new Love DoLove(){
         return base.DoLove();
      }
   }

   [Test]
   public void DoLove_Test(){
      var fakeM = new FakeMom();
      Assert(_expectedLove,fakeM.DoLove());
   }
}

为什么不把
受保护的
方法当作不能直接调用的任何其他方法,并改变可访问性或测试可访问调用的副作用呢?(如果您使用的是InternalsVisibleTo,您可以将其更改为
受保护的内部
。)Moq应该模拟外部对象,以便隔离SuT。在这种情况下,您所拥有的只是SuT。所以我很想说:不,Moq在这里帮不了你。附言:你的解决方案没有问题。在这种情况下我也会这么做天哪。。。乔恩·斯凯特!他是真的。。。哇