簡體   English   中英

如何使用 Rhino Mocks 並測試一個方法沒有被調用?

[英]How to use Rhino Mocks and test that a method is not called?

我有以下代碼:

public class Foobar{
    public static void Go(IFoo foo){
        if (foo.bar != null){
            foo.bar.action = !foo.bar.action;
        }
    }
}

並且想測試當 foo.bar == null 時 foo.bar.action 不會改變。

我已經模擬了一個 IFoo object,但我不確定我應該如何測試 go 來測試 rest。 有什么建議么?

您可以使用VerifyGet模擬方法測試bar屬性Get僅調用一次 - 這是if語句中的調用:

    [Test]
    public void Action_WasNotSet()
    {
        var mockFoo = new Mock<IFoo>();

        Foobar.Go(mockFoo.Object);

        mockFoo.VerifyGet(f => f.bar, Times.Once);
    }

注意:我假設bar是 class

if語句的計算結果為 true 時,可能會調用bar屬性 3 次並且無法調用VerifyGet

如果您想明確bar屬性肯定是null ,您可以添加以下模擬設置:

mockFoo.SetupGet(f => f.bar).Returns((Bar)null);

但作為 class 的默認值是null ,此設置不是必需的,但可能會使您的測試更具可讀性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM