如何测试MutableLiveData <>。观察数据何时发生变化?

问题描述 投票:1回答:1

如果API使用Login函数,我有下一个测试代码:

@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 protected]";
        String password = "[email protected]";
        profileRepository.login(data, email, password);

    }
}

API返回的数据保存到data中,但我不知道如何将观察者放在这里,因为我需要上下文,也许testLogin没有完成。

任何的想法?

谢谢

android junit android-testing robolectric android-mvvm
1个回答
0
投票

最后,我可以使用robolectric测试下一个代码:

@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 protected]";
        String password = "[email protected]";
        profileRepository.login(data, email, password);
        createLoginActivityWithIntent();

        data.observe(activity, (@Nullable ApiResponse<LoginData> loginResponse) -> {
            assertTrue(loginResponse != null);
        });
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.