Я создал модульный тест для метода интерактора, который возвращает Rx Single.Сингл должен асинхронно возвращать бин пользователя.Я попытался вызвать blockingGet () для Single, но bean-компонент не возвращается, поскольку тест работает бесконечно.Я проверил точки останова и увидел, что бин был создан, но не вернулся.Также я попытался вызвать test (). Values (). Get (0) для Single, но он не содержал компонент.Точки останова не вызывали.
Я могу понять, в чем проблема.Мне нужна помощь для ее решения.
Метод в интеракторе.
public Single<UserBean> verifyUser() {
String jwt = getJWTToken();
if (TextUtils.isEmpty(jwt)) {
return Single.error(new EmptyJWTException());
}
if (!checkConnectionInfo()) {
return Single.error(new NotNetworkConnectedException());
}
return Single.create((SingleOnSubscribe<UserBean>) emitter -> {
UserBean resultBean = mAuthenticationRepository.verifyUserByJwt(jwt);
if (resultBean != null && !TextUtils.isEmpty(resultBean.getId())) {
emitter.onSuccess(resultBean);
} else {
emitter.onError(new RequestToServerException());
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
Модульный тест.
@RunWith(MockitoJUnitRunner.class)
public class AuthenticationInteractorTest {
@Mock
private Application mApplication;
@Mock
private IAuthenticationRepository mAuthenticationRepository;
@Mock
private SharedPreferences mSharedPreferences;
@Mock
private ConnectivityManager mConnectivityManager;
@Mock
private NetworkInfo mNetworkInfo;
private AuthenticationInteractor mInteractor;
@Before
public void setUp() {
mInteractor = new AuthenticationInteractor(mAuthenticationRepository, mApplication);
}
@Test
public void verifyUserTest() {
String jwt = "jwt";
UserBean userBean = createUserBean();
when(mApplication.getSharedPreferences(AuthenticationInteractor.SHARED_PREFS, Context.MODE_PRIVATE)).thenReturn(mSharedPreferences);
when(mSharedPreferences.getString(AuthenticationInteractor.TOKEN_KEY, null)).thenReturn(jwt);
when((ConnectivityManager) mApplication.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(mConnectivityManager);
when(mConnectivityManager.getActiveNetworkInfo()).thenReturn(mNetworkInfo);
when(mNetworkInfo.isConnected()).thenReturn(true);
when(mAuthenticationRepository.verifyUserByJwt(jwt)).thenReturn(userBean);
UserBean bean = mInteractor.verifyUser().blockingGet();
assertEquals(userBean, bean);
}
private UserBean createUserBean() {
UserBean userBean = new UserBean();
userBean.setMetaId("1539762652616:940c29e6d716:15:jmt4z02l:11182");
userBean.setJWT("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6Im1hZ2F6b240aWtAeWFuZGV4LnJ1IiwiY3MiOiI1OWEwNDA2MTgzNDAwMDAwIiwiaWF0IjoxNTM5NzYyNjUyLCJhdWQiOiIqLmxvY2FsaG9zdCIsImlzcyI6Im1zLXVzZXJzIn0.2AcuLZjR_-GyWAFen7JczJ5-W37zQWGbnRRErGLqDEY");
userBean.setId("test@test.test");
userBean.setType("user");
userBean.setUserName("test@test.test");
userBean.setCreated(1535970916310L);
userBean.setLatestResult("1539676474685");
userBean.setOnDiet("No");
return userBean;
}
}