如何在Rhino Mock对象中调用回调?

时间:2011-03-10 02:15:44

标签: c# rhino-mocks

我知道必须有办法做到这一点......我只是RhinoMocking的新手。

基本上,我有以下课程:

class B
{
     private object _dependency;

     public B(object dependency)
     {
          _dependency = dependency;
     }

     public void Method()
     {
         dependency.DependencyMethod(delegate(){ Method2(); });
     }

     private void Method2()
     {
         // do stuff
     }
}

我在测试中传递了一个犀牛模拟,接口作为依赖项。我想在我的测试中测试Method2 ...但它是私有的,所以获得它的唯一方法是查看DependencyMethod的参数。我怎么做? :P

谢谢!

2 个答案:

答案 0 :(得分:0)

一个测试应确定Method()传递委托。 另一个测试应该确定真正的依赖关系调用委托。

要验证Method()是否将委托传递给Method2,您需要使委托可见。也许您可以将其作为依赖项传递,以便在另一个测试中,您可以验证Method()是否传递了您传入的委托。

 private object _dependency;
 private delegate_type _delegate;

 public B(object dependency, delegate_type theDelegate)
 {
      _dependency = dependency;
      _delegate= theDelegate;
 }

 public B(object dependency) : this(dependency, delegate(){ Method2(); }) {}

 public void Method()
 {
     dependency.DependencyMethod(theDelegate);
 }

答案 1 :(得分:0)

所以在深入研究之后,我认为最好的方法是在模拟中使用GetArgumentsForCallsMadeOn,以此方式获取委托,然后调用它。