Смешированные статические методы не доступны во всех потоках. Как это исправить, используя MockitoJAVA

Программисты JAVA общаются здесь
Anonymous
Смешированные статические методы не доступны во всех потоках. Как это исправить, используя Mockito

Сообщение Anonymous »

Мы пытаемся издеваться над подключением к базе данных. Совместное соединение доступно, когда поток является локальным, но когда используется многопоточные чтения, макетное соединение недоступно. Jmockit очень хорошо позаботится об этом. Использование Mockito не в состоянии достичь этого. Есть предложения/идеи о том, как справиться с этим?

Код: Выделить всё

private static void setupMock()
{
if (driverManagerMock != null)
{
System.out.println("Closing existing DriverManager mock.");
driverManagerMock.close();
}
System.out.println("Setting up static mock for DriverManager.");
driverManagerMock = mockStatic(DriverManager.class);

driverManagerMock.when(() -> DriverManager.getConnection(anyString(), anyString(), anyString()))
.thenAnswer(invocation ->
{
String url = invocation.getArgument(0);
String user = invocation.getArgument(1);
String password = invocation.getArgument(2);

System.out.println("DriverManager.getConnection called with URL: " + url + ", User: " + user);

if (instance != null && instance.dbConnections.contains(url))
{
System.out.println("Returning mocked FakeConnection for URL: " + url);
return new FakeConnection().getMockInstance();
}
else
{
System.out.println("Calling real DriverManager.getConnection for URL: " + url);
return invocation.callRealMethod();
}
});
}
Приведенное выше максимальное соединение должно быть доступно и во всех других потоках во время работы.

Подробнее здесь: https://stackoverflow.com/questions/795 ... using-mock

Вернуться в «JAVA»