Я издеваюсь над объектом Дао для своего хранилища.Использование verify (mockedDao) работает только вне класса Repository.Это не будет работать внутри.Однако Mockito. when
прекрасно работает внутри класса Repository.
Сейчас я просто пытаюсь заставить его записать один успешный вызов.Но это не работает.Используя операторы журнала, я смог убедиться, что макетный метод действительно вызывается внутри класса Repository.Это просто не в состоянии показать это для оператора verify ().Я должен также упомянуть, что оператор verify () отлично работает, когда я вызываю метод вне класса Repository.Он просто отказывается работать внутри.
@RunWith(MockitoJUnitRunner::class)
class RepositoryTest {
@InjectMocks
private lateinit var repos: Repository
private lateinit var db: AppDatabase
@Mock
lateinit var mockedDao : MomentDao
@Before
fun setTheDatabase() {
val context = ApplicationProvider.getApplicationContext<Context>()
db = Room.inMemoryDatabaseBuilder(
context, AppDatabase::class.java).build()
momentDao = db.momentDao()
momentDao.insertMoment(dataBaseTestMoment)
setMomentsForBoundsSearch()
//repos = Repository(mockedDao)
mappedMoments.postValue(mutableListOf<Moment>())
repos.ReposiTest()
repos.setMappedMoments(mappedMoments)
}
@Test
fun hardDaoTest() {
Mockito.`when`(mockedDao.findMomentsByBound(ArgumentMatchers.anyDouble(), ArgumentMatchers.anyDouble(),
ArgumentMatchers.anyDouble(), ArgumentMatchers.anyDouble())).thenReturn(momentList)
repos.queryMapMoments(LatLngBounds(LatLng(20.toDouble(), -40.toDouble()), LatLng(25.toDouble(), -30.toDouble())), zoom)
Mockito.verify(mockedDao, times(1)).findMomentsByBound(
ArgumentMatchers.anyDouble(), ArgumentMatchers.anyDouble(),
ArgumentMatchers.anyDouble(), ArgumentMatchers.anyDouble())
}
Wanted but not invoked:
mockedDao.findMomentsByBound(
<any double>,
<any double>,
<any double>,
<any double>
);
-> at
com.example.barrechat108.RepositoryTests.hardDaoTest(RepositoryTests.kt:145)
Actually, there were zero interactions with this mock.