[英]JMockit behaviour when mocking same class multiple times using @Mocked
當一次模擬一個類和一次兩次模擬一個類時,我得到不同的輸出。 我知道@Mocked模擬一個類的所有實例,但是不確定為什么多次模擬會影響新創建對象的輸出。 這是預期的行為嗎?
測試1.打印10 :
@Test
public void jmockitTest1(@Mocked final Date d1)
{
new NonStrictExpectations()
{{
d1.getTime(); returns(10L);
}};
System.out.println( d1.getTime() ); // prints 10
System.out.println( new Date().getTime() ); // prints 10 !
}
用第二個模擬日期測試2。 打印0 :
@Test
public void jmockitTest2(@Mocked final Date d1, @Mocked final Date d2)
{
new NonStrictExpectations()
{{
d1.getTime(); returns(10L);
}};
System.out.println( d1.getTime() ); // prints 10
System.out.println( new Date().getTime() ); // prints 0 !
}
第二個測試(對Date
兩次模擬)默認情況下獲得“實例匹配”。 因此,就好像期望記錄為onInstance(d1).getTime();
。
嘲笑行為的這種差異只是為了方便而自動激活。 在同一測試中聲明多個相同類型的模擬字段/參數的唯一原因是,對不同模擬實例的調用會產生不同的結果。 自動的“實例匹配”匹配避免了在每個實例上都使用onInstance(mock)
的需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.