C# Rhino Mock:模拟私有方法调用c

C# Rhino Mock:模拟私有方法调用c,c#,.net,unit-testing,rhino-mocks,C#,.net,Unit Testing,Rhino Mocks,可以模拟priavte方法调用 范例 Public void StartProcess(string valueFound) { if(this.value == valuefound) { MockThisPriavteMethodCall(); } AnotherPrivateMethodCallIDontNotWantToMockOut(); } 这种情况是,我想测试一个私有方

可以模拟priavte方法调用

范例

   Public void StartProcess(string valueFound)
    {
        if(this.value == valuefound)
        {
            MockThisPriavteMethodCall();
        }

        AnotherPrivateMethodCallIDontNotWantToMockOut();
    }
这种情况是,我想测试一个私有方法,但我想模拟另一个方法的结果

在上面的示例中,我希望能够模拟方法调用MockThisPriavtMethodCall,但我希望运行另一个名为DontWantMockout的私有方法

我可以使用某种形式的expect吗

这可以在Rhino Mock中实现吗?这是正确的想法吗

另外:我正在尝试测试ViewModel类中的代码

上面的例子也表明它是少数几种公共方法之一。这些方法调用许多不同的私有方法。它再次调用了许多私有方法


我应该测试允许代码通过几个分支的某些路径和情况,还是应该只测试它们自己的方法?

模拟是从被测对象到依赖项使用的-在您想要模拟测试所针对的同一对象中的部分代码时,有点不对劲


很难从伪代码中分辨出太多内容,但听起来您可能想为要伪造的代码引入一个新的依赖项。如果你能给我们更多关于上下文的具体细节,这将非常有帮助。

模拟是从被测对象到依赖项使用的——当你想模拟测试对象中的部分代码时,有些地方是不对的


很难从伪代码中分辨出太多内容,但听起来您可能想为要伪造的代码引入一个新的依赖项。如果你能给我们提供更具体的上下文细节,这将非常有帮助。

没有一个干净的方法可以直接做到这一点

您可以通过将方法调用更改为protected,并创建一个从类继承的可测试类,并通过这种方式为它创建期望来实现这一点

话虽如此,你在这里可能用错了嘲弄。很明显,您希望从方法返回一个伪值,一旦您使该方法受到保护,您可以按如下方式执行此操作:

myclass.Stub(s => s.MockThisMethodCall()).Return("WhateverValueYouExpect"); 

没有一个干净的方法可以直接做到这一点

您可以通过将方法调用更改为protected,并创建一个从类继承的可测试类,并通过这种方式为它创建期望来实现这一点

话虽如此,你在这里可能用错了嘲弄。很明显,您希望从方法返回一个伪值,一旦您使该方法受到保护,您可以按如下方式执行此操作:

myclass.Stub(s => s.MockThisMethodCall()).Return("WhateverValueYouExpect"); 

@乔恩·斯基特,是的,我认为你是对的。我在上面添加了更多的细节,希望有助于解释我的想法。我担心的不是代码,而是我应该如何考虑如何对这类代码进行单元测试。@user101010101:老实说,这还不是很清楚。您应该通过公共方法或潜在的内部方法来测试私有方法。@Jon Skeet,是的,我认为您是正确的。我在上面添加了更多的细节,希望有助于解释我的想法。我担心的不是代码,而是我应该如何考虑如何对这类代码进行单元测试。@user101010101:老实说,这还不是很清楚。您应该通过公共方法或潜在的内部方法来测试私有方法。