我正在为存储库应该返回用户的方法编写一个测试,我已经对此逻辑进行了硬编码,但我的模拟返回了一个空的可选参数. 以下是方法代码
@Override
public AppChatMember getByTelegramId(long telegramId) {
return userRepository.findByTelegramId(telegramId).orElseThrow(() -> new UserNotFoundException(
String.format(USER_NOT_FOUND_BY_TG_ID, telegramId)));
}
以下是测试代码
@Test
@DisplayName("Checking that method is calling find by telegram id")
void getByTelegramIdShouldCallFindByTelegramId() {
long expectedTelegramId = 123456L;
AppChatMember user = getAppChatMember();
when(userRepository.findByTelegramId(anyLong())).thenReturn(Optional.of(user));
userService.getByTelegramId(expectedTelegramId);
verify(userRepository, times(1)).findByTelegramId(expectedTelegramId);
}
设置模拟
@SpringBootTest
@ActiveProfiles("test")
class UserServiceImplTest {
@Autowired
private UserService userService;
@MockBean
private UserRepository userRepository;
@MockBean
private GroupRepository groupRepository;
@Captor
private ArgumentCaptor<AppChatMember> appChatMemberCaptor;
这里是getAppchat Member
AppChatMember getAppChatMember() {
AppChatMember user = new AppChatMember();
user.setNickName("Nickname");
user.setTelegramId(123456L);
user.setIsProcessing(true);
return user;
}
这是用户存储库
@Repository
public interface UserRepository extends
JpaRepository<AppChatMember, Long> {
boolean existsByTelegramId(long telegramId);
Optional<AppChatMember> findByTelegramId(long telegramId);
Optional<AppChatMember> findByTelegramId(Long telegramId);
List<AppChatMember> findByCondition(UserConditionEnum condition);
}