Mockito Verify throws (Требуется, но не вызывается :) ошибка каждый раз, даже если был вызван смоделированный метод - PullRequest
0 голосов
/ 09 апреля 2019

Я издеваюсь над Дао, который внедряется в класс репозитория, который я тестирую.При использовании Mockito.verify (myDao) он отлично работает вне класса Repository.Когда я использую его, он говорит, что метод был вызван один раз, именно то, что я ожидал.Однако внутри класса репозитория он всегда будет выдавать (Wanted, но не вызывается:)

Что странно в том, что Mockito. when () прекрасно работает в классе Repository, я знаю это, потому что я заполнилэто с заявлениями Log.d.Операторы log.d показывают, что используется список, переданный с помощью Mockito. when (). Thenreturn (myList).Это в хранилище.Однако, хотя я ясно вижу, что этот метод был вызван, Mockito.verify (), похоже, все еще верит, что его никогда не вызывали.

@RunWith(MockitoJUnitRunner::class)
class RepositoryTests {


@InjectMocks
private lateinit var repos: Repository

@Mock
lateinit var mockedDao : MomentDao

@get:Rule
val activityRule = ActivityTestRule(MainActivity::class.java)

@get:Rule
val mockitoRule: MockitoRule = MockitoJUnit.rule()



@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())

}

Итак, Mockito.when() работает нормально, а momentList содержится в репозитории, как и ожидалось.Mockito.verify каждый раз терпит неудачу.

Любая информация по этому вопросу будет принята с благодарностью.

Это была ошибка.

Wanted but not invoked:
mockedDao.findMomentsByBound(
<any double>,
<any double>,
<any double>,
<any double>
);
-> at 

com.example.barrechat108.RepositoryTests.hardDaoTest (RepositoryTests.kt: 147) На самом деле с этим макетом не было никаких взаимодействий.

at 

com.example.barrechat108.RepositoryTests.hardDaoTest (RepositoryTests.kt: 147) на java.lang.reflect.Method.invoke (нативный метод)

...