Здравствуйте, у меня есть эта модель представления, которую я хочу проверить. У меня есть класс обслуживания, который использует rx java Я получаю данные и передаю их непосредственно адаптеру, но мой обратный вызов onsuccess никогда не получает обратный вызов, как я могу это исправить?
Вот код для модели представления:
class NewsViewModel(private val dataManager: DataManager) : ViewModel() {
private val disposables: CompositeDisposable = CompositeDisposable()
private lateinit var country: String
val newsListAdapter = NewsAdapter(this)
private val urlMutableLiveData = MutableLiveData<String>()
val urlLiveData: LiveData<String>
get() = urlMutableLiveData
fun loadNews(query: String) {
this.country = query
disposables.add(
dataManager.getNewsList(query, APIKEY)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { result -> onRetrieveNewsListSuccess(result as List<News>) }
)
}
fun onNewsClick(articleViewModel: ArticleViewModel) {
urlMutableLiveData.value = articleViewModel.articleLink.value
}
override fun onCleared() {
disposables.clear()
}
private fun onRetrieveNewsListSuccess(newsList:List<News>) {
newsListAdapter.updateNewsList(newsList)
}
}
и это мой тест:
@RunWith(MockitoJUnitRunner::class)
class NewsListViewModelTest {
companion object {
@ClassRule
@JvmField
val schedulers = RxImmediateSchedulerRule()
}
@Rule
@JvmField
var rule = MockitoJUnit.rule()
val dataManager = mockk<DataManager>(relaxed = true)
val newsAdapter = mockk<NewsAdapter>(relaxed = true)
private lateinit var newsListViewModel: NewsViewModel
@Before
fun setUp() {
newsListViewModel = NewsViewModel(dataManager)
}
@Test
fun loadNews() {
val newsList = mutableListOf(News("author", "title", "image", "link", Source("name")))
every { dataManager.getNewsList("country", "apiKey") } returns Observable.just(newsList)
newsListViewModel.loadNews("us")
verify { newsAdapter.updateNewsList(newsList) }
}
}
Как это исправить, чтобы rx java вернул обратный вызов. В настоящее время я получаю эту ошибку:
java.lang.AssertionError: Verification failed: call 1 of 1: NewsAdapter(#2).updateNewsList(eq([News(author=author, title=title, urlToImage=image, url=link, source=Source(name=name))]))) was not called
Заранее спасибо.
Привет