首页 > 解决方案 > 在另一个服务类 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 并注入所有四个依赖项

标签: spring-bootkotlinmockito

解决方案


您可以创建 UserService 对象及其依赖项作为模拟对象,然后将其用作 AdminServiceTests 中的依赖项。


推荐阅读