繁体   English   中英

验证方法是否在模拟类中调用

[英]Verify if method called in the mocked class

如果我们有这样的事情:

public class test
   {
       public void Condition()
       {
           if (x == y)
           {
               methodOne();
           }
           else
           {
               methodTwo();
           }
       }
   }

如何使用Rhino Mock编写单元测试来断言methodOne被调用?

通常,您不会为要测试的类创建模拟程序。 您可以为其依赖项创建模拟。

因此,如果您的代码实际上是:

public class Test
{
    private readonly IFoo foo;

    public Test(IFoo foo)
    {
        this.foo = foo;
    }

    public void Condition()
    {
        if (x == y)
        {
           foo.MethodOne();
        }
        else
        {
            foo.MethodTwo();
        }
    }
}

...然后有必要为IFoo创建一个模拟,并将其传递给您要测试的Test实例。

尽管部分模拟可以让您测试是否调用了同一类中的方法,但是我通常会避免这种情况。 测试您是否可以看到调用MethodOneMethodTwo效果

您可以利用MethodOne作为重要方法:

public virtual void MethodOne()
{
}

并使用部分模拟:

MockRepository mock = new MockRepository();

var mockTest = mock.PartialMock<Test>();
mockTest.Expect(m => m.MethodOne());

mock.ReplayAll();
mock.VerifyAll();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM