簡體   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