簡體   English   中英

使用@Mocked多次模擬同一類時的JMockit行為

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

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