【发布时间】:2021-10-20 18:44:49
【问题描述】:
我正在尝试使用事务管理器模拟以下代码。接收错误如下。我该如何解决这个问题?
代码:
DefaultTransactionDefinition paramTransactionDefinition = new DefaultTransactionDefinition();
PlatformTransactionManager transactionManager = new DataSourceTransactionManager(namedParameterJdbcTemplate.getJdbcTemplate().getDataSource());
TransactionStatus status = transactionManager.getTransaction(paramTransactionDefinition);
测试:
@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);
错误:
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");
【问题讨论】:
-
代码在生产中工作,只是实际的单元测试@Pirate
标签: java spring-boot mockito