So I´m doing a unit test of a view model with rxjava and I want to test loadCharacters
public class CharacterViewModel extends ViewModel {
private final DataManager dataManager;
private CompositeDisposable disposables;
private MutableLiveData responseLiveData = new MutableLiveData<List<RelatedTopic>>();
public CharacterViewModel(DataManager dataManager) {
this.disposables = new CompositeDisposable();
this.dataManager = dataManager;
}
public void loadCharacters(String query) {
disposables.add(
dataManager.getCharacters(query)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(responseLiveData::setValue)
);
}
}
So here is my test:
@Mock
private lateinit var charactersService: CharactersService
val viewmodel by lazy { CharacterViewModel(DataManager(charactersService)) }
@Test
fun `init set joke list to empty`() {
//val jokes = viewmodel.loadCharacters("simpsons viewer")
val relatedTopic = RelatedTopic()
relatedTopic.text = "text"
val icon = Icon()
icon.url = "url"
relatedTopic.icon = icon
`when`(viewmodel.loadCharacters(anyString())).thenReturn(
just(relatedTopic)
)
}
But when doing the just(relatedTopic) I´m getting Type inference failed. Expected type mismatch requiered Unit!, found Single!
Why am I getting that error? what´s the right way to mock the results from rxjava?
Thanks in advance. Greetings
Aucun commentaire:
Enregistrer un commentaire