我正在嘗試使用 Mockito 進行單元測驗,但找不到任何方法來模擬建構式的可選自動裝配欄位。
這是我的建構式:
@Autowired
public BatchInputManager(
BatchInputContentRepository batchInputContentRepository,
Optional<List<BatchInputExecutor>> batchInputExecutors) {
// ...
}
這是我嘗試模擬這些欄位的方法:
@InjectMocks
BatchInputManager batchInputManager;
@Mock
BatchInputContentRepository batchInputContentRepository;
@Mock
List<BatchInputExecutor> executors;
為了記錄,BatchInputExecutor該類是一個抽象類,我定義了一個在我的測驗中擴展它的類。
當我運行我的代碼時,應該包含所有擴展類的BatchInputExecutor可選項不是空的,它是空的;并且存盤庫不為空。
我應該如何模擬建構式中可選欄位的值?
uj5u.com熱心網友回復:
我會@BeforeEach/@BeforeAll在 JUnit 測驗的方法中設定模擬。
@BeforeEach
public void mocking(){
var repoMock = ... mock repo ..
var executorMock = mock(BatchInputExecutor.class)
// configure executorMock here
var batchInputExecutors = Optional.of(List.of(executorMock))
var batchInputManager = new BatchInputManager()
... set the class level fields here ..
}
uj5u.com熱心網友回復:
如果你真的想在這種情況下使用 Mockito 的注解:
改變這個
@Mock
List<BatchInputExecutor> executors;
對此
@Mock
Optional<List<BatchInputExecutor>> executors;
并配置 mockito 以支持 final 類和方法。請參閱此https://stackoverflow.com/a/40018295/10744129
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/352793.html
