import org.junit.Test
import org.mockito.Mockito
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
class UserRepositoryTest {
@Test
fun testGetUserInfo() {
// 创建模拟的User对象
val mockUser: User = mock()
val mockPermissions = listOf("permission1", "permission2")
// 模拟User对象的getPermissions方法返回特定权限列表
whenever(mockUser.getPermissions()).thenReturn(mockPermissions)
// 创建模拟的UserRepository对象
val mockUserRepository: UserRepository = mock()
// 模拟UserRepository的getUserInfo方法返回特定User对象
whenever(mockUserRepository.getUserInfo()).thenReturn(mockUser)
// 调用被测试方法
val user = mockUserRepository.getUserInfo()
val permissions = user.getPermissions()
// 验证结果
assert(permissions == mockPermissions)
}
}
// 定义UserRepository接口
interface UserRepository {
fun getUserInfo(): User
}
// 定义User类
class User {
fun getPermissions(): List<String> {
return emptyList()
}
}
Mockito - Kotlin关键语法解释:
mock
函数:用于创建模拟对象。例如val mockUser: User = mock()
创建了一个User
类的模拟对象,val mockUserRepository: UserRepository = mock()
创建了UserRepository
接口的模拟对象。
whenever
函数:用于设置模拟对象方法的行为。如whenever(mockUser.getPermissions()).thenReturn(mockPermissions)
设置了mockUser
的getPermissions
方法返回特定的权限列表;whenever(mockUserRepository.getUserInfo()).thenReturn(mockUser)
设置了mockUserRepository
的getUserInfo
方法返回特定的User
对象。