我在我的代碼的不同點以下兩行:匹配器的Mockito不工作
Message<T1> reply = (Message<T1>) template.sendAndReceive(channel1, message);
Message<T2> reply = (Message<T2>) template.sendAndReceive(channel2, message);
我做了一些單元測試和測試涵蓋報表。當我嘗試嘲笑的行爲,我定義一些行爲是這樣的:
Mockito.when(template.sendAndReceive(Mockito.any(MessageChannel.class), Matchers.<GenericMessage<T1>>any())).thenReturn(instance1);
Mockito.when(template.sendAndReceive(Mockito.any(MessageChannel.class), Matchers.<GenericMessage<T2>>any() )).thenReturn(null);
當我執行單元測試,並做一些調試,第一條語句返回null
你有任何想法的匹配器似乎不工作?它總是需要模擬的最後定義。我使用1.1.10的Mockito
你正在遭受類型擦除。這兩個調用之間唯一不同的是GenericMessage中的'<>'中的泛型 - 它們與運行時Java看起來是一樣的。最好的建議是根據你傳入的對象而不是它們的類型來改變模擬的行爲,然後你會得到你想要的行爲。 –