我有這樣的方法,我試圖模擬:如何使用Mockito匹配2d數組參數?
public class Dog {
public String foo(String a, String[][] headers);
}
我想回bar
時叫做:
Dog dog = mock(Dog.class);
when(dog.foo("hello", new String[][]{{"a", "b"}})).thenReturn("bar");
然而,這並不工作,因爲使用的Mockito匹配equals()
時陣列,並且因爲它們不指向相同的對象,所以它失敗:
// prints null instead of bar
System.out.println(dog.foo("hello", new String[][]{{"a", "b"}}));
請注意代碼被測試將無法訪問用作#when
匹配參數的對象。有什麼辦法可以解決這個問題?
我相信你的問題是你的實現中的數組不是同一個實例。嘗試將數組賦值給變量,並在「when」和「dog.foo」調用中使用該變量。 – Nodebody
是的,這就是問題所在,然而被測試的代碼將調用dog.foo與這些參數將無法訪問數組變量。它必須構建一個具有相同值的新數組。 – Popcorn