簡體   English   中英

Mockito-根據另一個對象狀態驗證方法調用

[英]Mockito - verify method call according to another objects state

我目前正在通過他的著作“成長的面向對象的設計-以測試為指導”來努力。 作者是本書中使用的JMock的創建者。 由於Mockito當前具有最具表現力(可讀性)的API,因此我使用Mockito而不是JMock。

對於大多數示例而言,到目前為止,使用更少的代碼效果很好。 有趣的是,我們看到了API隨時間和框架(JMock-> EasyMock-> Mockito)如何演變而仍然基於相同的概念。

無論如何: 當另一個對象狀態具有特定值時,我需要驗證是否已調用模擬方法。

public class TestSomething{

    private MyMockedInterface mock;
    private States state;

    @Test
    public void testMethod()
    {
        // I need something like
        when(state.equals(value)).verify(mock).method()

        sut.doSomething();
    }
}

不幸的是,當(T methodCall)無法處理對象比較時。 sut.something()之后的assertEquals不會對我有幫助,因為在doSomething中狀態可能已更改了幾次。

我很確定一定有辦法解決這個問題。 如果舊的JMock具有Mockito沒有的功能,那會很奇怪:-) ...我只是找不到它。

您需要的是一個稱為“ Answer東西-這是一個包裝一些代碼的對象,這些代碼將在調用您的方法時運行。 有關使用Answer的語法的說明,請參見http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#11

在您的Answer ,您可以使用斷言來檢查其他對象的狀態是否符合您的需要。 然后,最后,您可以進行verify ,只是確保已調用該方法。

暫無
暫無

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

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