Spring boot SpringJPA能够使用存储库中的任何匹配器
所以我试着测试我的服务层,我模拟了我的存储库,我想做的是Spring boot SpringJPA能够使用存储库中的任何匹配器,spring-boot,mockito,junit5,Spring Boot,Mockito,Junit5,所以我试着测试我的服务层,我模拟了我的存储库,我想做的是 @ExtendWith(MockitoExtension.class) public class TicketServiceTest { @Mock private TicketRepository ticketRepository; @InjectMocks private TicketService ticketService; @Test public void test_buy
@ExtendWith(MockitoExtension.class)
public class TicketServiceTest {
@Mock
private TicketRepository ticketRepository;
@InjectMocks
private TicketService ticketService;
@Test
public void test_buy_ticket_successfully() {
Ticket ticket = new Ticket(1, false, false, "");
List<Ticket> availableTickets = Arrays.asList(ticket);
Mockito.when(ticketRepository.findAllUnboughtAndUnpickedTickets()).thenReturn(availableTickets);
Mockito.when(ticketRepo.findById(any(Integer.class)).thenReturn(Optional.of(any(Ticket.class));
Ticket boughtTicket = ticketService.buyTicket("123");
assertNotNull(boughtTicket);
assertEquals(1, boughtTicket.getId());
Mockito.verify(ticketRepository).findAllUnboughtAndUnpickedTickets();
}
@ExtendWith(MockitoExtension.class)
公共类票务测试{
@嘲弄
私人票务;
@注射模拟
私人票务票务服务;
@试验
公共无效测试\u购买\u票证\u成功(){
票证=新票证(1,假,假,“”);
List availableTickets=Arrays.asList(票证);
Mockito.when(ticketposition.findallunboughtandunpickedttickets()),然后返回(availableTickets);
Mockito.when(ticketRepo.findById(any(Integer.class)).thenReturn(any(Ticket.class))的可选.of;
Ticket boughtTicket=票务服务。购买票证(“123”);
assertNotNull(boughtTicket);
assertEquals(1,boughtTicket.getId());
Mockito.verify(ticketRepository.findAllUnboughtAndUnpickedTickets();
}
我得到的错误是:
Type mismatch: cannot convert from Matcher<Integer> to Integer
类型不匹配:无法从匹配器转换为整数
我只想在输入和输出中使用任何匹配器,但这不起作用,因为我的repoistory如下所示:
public interface TickRep extends JpaRepository<Ticket, Integer>
public接口TickRep扩展了JpaRepository
我正在使用SpringBoot,JUnit5
有什么想法吗?线路设置期望值有问题:
thenReturn(可选)(任意(票证类别));
你得到的错误
Type mismatch: cannot convert from Matcher<Integer> to Integer
类型不匹配:无法从匹配器转换为整数
建议您使用的是Hamcrest匹配器,而不是Mockito匹配器
看
- Mockito
返回any()
T
- Hamcrest
返回any()
Matcher
thenReturn(anyInt())
或thenReturn(any(Foo.class))
。Mockito需要确切知道在存根调用中返回哪个实例,并且不会为您选择任意返回值
将您的Junit类与依赖项一起共享,您得到了哪些异常?@dassum更新了注释