[英]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.