我有一個帶有兩個Map字段的抽象類。我想嘲笑並注入一個AbstractClass的子類的對象來進行單元測試。另一個我真的不太在意,但它有一個固定器。使用mockito的@InjectMocks解決setter注入問題
public abstract class AbstractClass {
private Map<String, Object> mapToMock;
private Map<String, Object> dontMockMe;
private void setDontMockMe(Map<String, Object> map) {
dontMockMe = map;
}
}
當使用@InjectMocks時,它會自動嘗試按順序注入:構造函數,設置器,字段。它通過檢查類型來檢查它是否可以在每個地方注入,然後命名是否存在多種類型的可能性。這對我來說效果不好,因爲我的嘲弄的mapToMock實際上是通過它的setter注入到dontMockMe中的。我無法編輯這個抽象類。有什麼辦法可以避免二傳注射嗎?先謝謝你!
只是爲了糾正你寫的東西 - Mockito首先嚐試構造函數注入,然後嘗試「setter和field」注入,其中mock可以通過setter或直接注入到字段中。即使你沒有這個二傳手,你仍然會遇到問題,因爲Mockito會將你的模擬注入到這兩個領域。 –