jeudi 8 novembre 2018

Why am I getting Requiered Unit!, found single

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