Как можно проверить MutableLiveData <>. Наблюдать, когда данные изменяются? - PullRequest
1 голос
/ 24 апреля 2019

У меня есть следующий код для проверки, если API работает с функцией входа в систему:

@RunWith(RobolectricTestRunner.class)
public class LoginTest {
    LoginRespository profileRepository = new LoginRespository(RuntimeEnvironment.application);

    @Test
    public void testLogin() {
        MutableLiveData<ApiResponse<LoginData>> data = new MutableLiveData<>();
        String email = "email@email.com";
        String password = "email@email.com";
        profileRepository.login(data, email, password);

    }
}

Данные возврата API сохраняются в data, но я не знаю, как можно поместить наблюдателя здесь, потому что мне нужен контекст и, возможно, что testLogin, не завершается.

Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 24 апреля 2019

Finnaly, я могу протестировать с помощью робоэлектрика со следующим кодом:

@RunWith(RobolectricTestRunner.class)
public class DownloadProfileTest {
    LoginRespository profileRepository = new LoginRespository(RuntimeEnvironment.application);
    private ActivityController<LoginActivity> controller;
    private LoginActivity activity;

    private void createLoginActivityWithIntent() {
        activity = controller
                .create()
                .start()
                .get();
    }

    @Before
    public void setUp() {
        controller = Robolectric.buildActivity(LoginActivity.class);
    }

    @Test
    public void testUtilsIsValidEmail() {
        MutableLiveData<ApiResponse<LoginData>> data = new MutableLiveData<>();
        String email = "email@email.com";
        String password = "email@email.com";
        profileRepository.login(data, email, password);
        createLoginActivityWithIntent();

        data.observe(activity, (@Nullable ApiResponse<LoginData> loginResponse) -> {
            assertTrue(loginResponse != null);
        });
    }
}
...