【发布时间】:2016-09-13 07:54:54
【问题描述】:
我有下面提到的使用 Mockito 的测试类。问题是它似乎忽略了我的 setClientId 参数。如果我将其设置为:
when(mockTransactRepViewRepository.findByClientIdAndBatchDateBetween("SETRANDOMHERE", todayDateTime.toDate(), todayDateTime.plusDays(1).toDate()))
.thenReturn(Arrays.asList(transactRepViewModelTest, transactRepViewModelTest2));
测试仍然通过。他们不应该失败吗?还是我误解了 Mockito 中的某些内容?
测试类
@RunWith(MockitoJUnitRunner.class)
@SpringApplicationConfiguration(classes = TransactRepViewRepository.class)
public class TransactRepViewRepositoryTest {
@Rule
public MockitoRule mockitoRule = MockitoJUnit.rule();
@Mock
private TransactRepViewRepository mockTransactRepViewRepository;
@Test
public void testFindByClientIdAndBatchDateBetween() {
DateTime todayDateTime = new DateTime().withTimeAtStartOfDay();
TransactRepViewModel transactRepViewModelTest = new TransactRepViewModel();
transactRepViewModelTest.setClientId("123456");
transactRepViewModelTest.setBatchDate(todayDateTime.toDate());
mockTransactRepViewRepository.save(transactRepViewModelTest);
TransactRepViewModel transactRepViewModelTest2 = new TransactRepViewModel();
transactRepViewModelTest2.setClientId("123456");
transactRepViewModelTest2.setBatchDate(todayDateTime.plusDays(1).toDate());
mockTransactRepViewRepository.save(transactRepViewModelTest2);
when(mockTransactRepViewRepository.findByClientIdAndBatchDateBetween("123465", todayDateTime.toDate(), todayDateTime.plusDays(1).toDate()))
.thenReturn(Arrays.asList(transactRepViewModelTest, transactRepViewModelTest2));
verify(mockTransactRepViewRepository, times(1)).save(transactRepViewModelTest);
verify(mockTransactRepViewRepository, times(1)).save(transactRepViewModelTest2);
}
以防万一,这是 Repository 类:
public interface TransactRepViewRepository extends JpaRepository <TransactRepViewModel, Long> {
...
List<TransactRepViewModel> findByTerminalnameIgnoreCaseContainingAndClDateBetween(String terminalName, Date startDate, Date endDate) throws DataAccessException;
...
}
【问题讨论】:
标签: java unit-testing spring-boot mockito