我正在为我定义的LocalDataSource类编写一些单元测试,这些类包装了 Room 数据库的功能DAO,我的代码如下所示:
房间DAO接口
@Dao
interface PersonDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(person: Person)
}
Run Code Online (Sandbox Code Playgroud)
本地数据源类
class PersonLocalDataSourceImpl(private val personDao: PersonDao) {
suspend fun insert(dispatcher: CoroutineDispatcher, person: Person) =
withContext(dispatcher) {
personDao.insert(person) // line 20
}
}
Run Code Online (Sandbox Code Playgroud)
单元测试类
@ExperimentalCoroutinesApi
@RunWith(JUnit4::class)
class PersonLocalDataSourceTest : BaseLocalDataSourceTest() {
@Test
fun givenPersonLocalDataSource_WhenInsertPerson_ThenPersonDaoInsertFunctionCalledOnce() =
runBlockingTest {
withContext(testCoroutineDispatcher) {
val personDao = Mockito.mock(PersonDao::class.java)
val personLocalDataSource = PersonLocalDataSourceImpl(personDao)
val person = mockPerson()
personLocalDataSource.insert(testCoroutineDispatcher, person)
Mockito.verify(personDao).insert(person) // line 36
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在运行测试时遇到此错误: …