在JUnit4测试期间应如何使用Mockito



我正试图通过Mockito测试我的用例,但它似乎不太好用。这是我想要测试的用例:

class GetStudentsUseCase @Inject constructor(private val studentRepository: StudentRepository) {
suspend fun execute():Result<List<Student>> = studentRepository.getStudents()
}

然后,我创建了GetStudentsUseCaseTest,它看起来像这样:

class GetStudentsUseCaseTest {
private lateinit var cut: GetStudentsUseCase
private var reservationList = listOf(
Student("Max", "122d"),
Student("Steven", "012s")
)
@Before
fun setUp() {
val fakeStudentRepository = Mockito.mock(StudentRepository::class.java)
cut = GetStudentsUseCase(fakeStudentRepository)
}
@Test
suspend fun test_name() {
Mockito.`when`(cut.execute()).thenReturn(Result.success(reservationList))
}
}

我应该在test_name方法中放入什么?

编辑:使用解决方案回答

@OptIn(ExperimentalCoroutinesApi::class)
class GetStudentsUseCaseTest {
private lateinit var cut: GetStudentsUseCase
@Mock
private lateinit var repository: StudentRepository
private var reservationList = listOf(
Student("Max", "122d"),
Student("Steven", "012s")
)
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
cut = GetStudentsUseCase(repository)
}
@Test
fun test_name() = runTest {
Mockito.`when`(repository.getStudents()).thenReturn(Result.success(reservationList))
val result = cut.execute()
assertEquals(result, Result.success(reservationList))
}
}

最新更新