spring-boot - 在另一个服务类 Mockito 中模拟具有依赖关系的服务类
问题描述
我想在另一个服务类 Mockito 中模拟一个具有依赖关系的服务类。
用户服务类
@Service
class UserService(
val userRepository: UserRepository,
val userRoleRepository: UserRoleRepository,
val jwtGenerator: JwtGenerator,
val emailService: EmailService
)
管理服务类
@Service
class AdminService(
val userService: UserService,
val userRepository: UserRepository,
val adminRepository: AdminRepository
)
现在我正在尝试使用这些类编写单元测试,如下所示
@RunWith(MockitoJUnitRunner::class)
class AdminServiceTests {
private lateinit var createAdmin: CreateAdmin
@Mock
lateinit var userRepository: UserRepository
@Mock
lateinit var userRoleRepository: UserRoleRepository
@Mock
lateinit var jwtGenerator: JwtGenerator
@Mock
lateinit var emailService: EmailService
@InjectMocks
lateinit var userService: UserService
@Mock
lateinit var userRepository: UserRepository // Conflicting declarations
@Mock
lateinit var adminRepository: AdminRepository
@InjectMocks
lateinit var adminService: AdminService
@Before
fun setup() {
this.createAdmin = CreateAdmin().apply {
email = "admin@gmail.com"
name = "admin"
password = "qwerty"
phone = 9873555555555
}
}
@Test
fun testCreateAdmin() {
val result = adminService.createAdmin(createAdmin)
Assert.assertEquals(true, result)
}
}
请建议如何在 AdminService 中模拟 userService 并注入所有四个依赖项
解决方案
您可以创建 UserService 对象及其依赖项作为模拟对象,然后将其用作 AdminServiceTests 中的依赖项。
推荐阅读
- python - 根据值随机选择字典键
- javascript - 获取:名为“数据库”的 Firebase 服务已注册错误,即使我没有在任何地方导入 firebase/database
- vue.js - SPA 调用 NET Core Rest API 进行外部身份验证 (OAuth)
- amazon-web-services - 允许来自奴隶詹金斯的流量的过滤规则是什么?
- java - 使用 'fetch.into(MyClass.class)' 时 jOOQ 配置为空
- php - 如何在 mysql 查询中使用选择选项值作为 from 的来源
- mysql - 无法使用 PD9 在 mysql ddl 生成中生成外键
- xunit - 如何根据测试类中的某些布尔条件跳过 xUnit.net 测试?
- php - 如何通过从 wordpress 中的数据库中获取数据来创建下拉菜单?
- c++ - 无法更新控制台应用程序中的窗口