Привет, я пишу модульные тесты для своего репозитория и уровня данных в сетевом модуле, но при написании модульных тестов для моего уровня DataSource я получаю сообщение об ошибке от Mockito.
Класс SaltDataSource:
class SaltDataSource : BaseDataSource() {
/**
* This method will get salt from server
*/
suspend fun getSalt(saltRequest: SaltRequest) =
getResult { TMSService.instance.getSaltAsync(SALT_URL, saltRequest) }
}
Интерфейс модернизации службы TMS:
interface TMSService {
@POST
suspend fun postHeartBeatAsync(
@Url url: String, @Header("Authorization") authToken: String,
@Body
heartBeatList: PostHeartBeat
):
Response<HeartBeatResponse>
@POST
suspend fun getSaltAsync(@Url url: String, @Body saltRequest: SaltRequest):
Response<SaltResponse>
companion object {
//creating singleton object of TMSService
val instance: TMSService by lazy {
ApiClient.retrofitInstance.create(TMSService::class.java)
}
}
}
SaltDataSourceTestClass:
/**
* Unit Test class for SaltDataSource
*/
@RunWith(MockitoJUnitRunner::class)
class SaltDataSourceTest {
@Mock
private lateinit var tmsService: TMSService
@Mock
private lateinit var saltRequest: SaltRequest
private lateinit var saltDataSource: SaltDataSource
private lateinit var saltResponse: SaltResponse
@Before
fun beforeTest() {
saltDataSource = SaltDataSource()
}
@Test
fun givenSaltRequest_whenGetSaltCalled_shouldCallGetSaltApi() {
runBlocking {
saltDataSource.getSalt(saltRequest)
delay(2000)
Mockito.verify(tmsService).getSaltAsync("url", saltRequest)
}
}
}
Я получаю эту проблему при попытке подтвердить свой звонок с помощью Mockito:
Wanted but not invoked:
tmsService.getSaltAsync("url", saltRequest);
Я проверил журналы http и получаю ответ, т. Е. Вызывается этот метод.