I am trying to Mock this following code with transaction manager. Receiving error below. How can I resolve this?
Code:
DefaultTransactionDefinition paramTransactionDefinition = new DefaultTransactionDefinition();
PlatformTransactionManager transactionManager = new DataSourceTransactionManager(namedParameterJdbcTemplate.getJdbcTemplate().getDataSource());
TransactionStatus status = transactionManager.getTransaction(paramTransactionDefinition);
Test:
@Mock
private JdbcTemplate jdbcTemplate;
@Mock
private PlatformTransactionManager platformTransactionManager;
@Mock
private DataSource dataSource;
@Mock
private TransactionStatus transactionStatus;
given(namedParameterJdbcTemplate.getJdbcTemplate()).willAnswer(a -> jdbcTemplate);
given(namedParameterJdbcTemplate.getJdbcTemplate().getDataSource()).willAnswer(a -> dataSource);
platformTransactionManager = Mockito.mock(DataSourceTransactionManager.class, withSettings().useConstructor(dataSource));
given(platformTransactionManager.getTransaction(any())).willAnswer(a -> transactionStatus);
Error:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
0 matchers expected, 1 recorded:
-> at given(platformTransactionManager.getTransaction(any())).willAnswer(a -> transactionStatus);
This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String");
trying to use this resource: https://stackoverflow.com/a/60429929/15435022