我正在为存储库应该返回用户的方法编写一个测试,我已经对此逻辑进行了硬编码,但我的模拟返回了一个空的可选参数. 以下是方法代码

@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);

}

推荐答案

问题是有两个相同的方法,但一个接受原语,另一个是对象类型和Mockito模拟对象类型方法,因此解决方案是从存储库中删除一个.

Java相关问答推荐

无法运行Java(已解决)

当耗时的代码完成时,Circular ProgressIndicator显示得太晚

无法在Java中将hhmmss格式的时间解析为LocalTime

如何审查Java dtos中的自定义注释字段?

当我用OkHttpClient重写shouldInterceptRequest来发布数据时,Android WebView正在以纯HTML加载URL内容

CSS应用于一个端点,但不应用于Thymeleaf中的另一个端点

将关键字与正文中的_Allowed匹配,但带有__Signing可选后缀

JavaFX如何在MeshView中修复多个立方体?

如何在ApachePOI中将图像添加到工作表的页眉?

类型集合的Jackson JsonNode:类型引用的对象读取器应该是Singleton吗?

如何在JavaFX中处理多个按钮

当构造函数创建一个新实例时,Java为什么需要&new";

无法将GSON导入到我的JavaFX Maven项目

每次我需要时创建和关闭数据库连接会有什么效果吗?

使用迭代器遍历HashMap不会因IF条件而停止

在Java中将.GRF转换为图像文件

JPA无手术同品种器械可能吗?

为什么Spring要更改Java版本配置以及如何正确设置?

java.lang.ClassCastException:com.google.firebase.FirebaseException无法转换为com.google.fire base.auth.FirebaseAuthException

SonarQube在合并升级到java17后对旧代码提出错误