单元测试ViewModel

时间:2018-08-10 13:50:22

标签: android unit-testing mvvm kotlin viewmodel

我正在尝试使用MVVM设计模式,并尝试在视图模型上进行一些单元测试。在视图模型中,注入了存储库实现。我想要做的是使用模拟的存储库测试视图模型。这是我的代码:

IntroViewModel

class IntroViewModel : ViewModel() {

   @Inject
   lateinit var userRepository: UserRepositoryImpl

   init {
      App.appComponent.inject(this)
   }

   var loggedIn: MutableLiveData<Boolean> = MutableLiveData()

   fun checkLoginStatus() {
      loggedIn.postValue(userRepository.isUserLoggedIn())
   }
}

UserRepositoryImpl

class UserRepositoryImpl: UserRepository {
    override fun isUserLoggedIn(): Boolean {
        return FirebaseAuth.getInstance().currentUser!=null
    }
}

IntroTest

@RunWith(AndroidJUnit4::class)
@SmallTest
class IntroTest {

    @get:Rule
    val rule = InstantTaskExecutorRule()

    lateinit var introViewModel: IntroViewModel

    @Before
    fun setup() {
        introViewModel = IntroViewModel()
    }

    @Test
    fun checkFirebaseState_test() {

        val shouldReturn = true

        introViewModel.checkLoginStatus()

        assertEquals(shouldReturn, introViewModel.loggedIn.value)

    }
}

我希望在测试时使用另一个UserRepository实现,以便测试不会依赖FirebaseAuth或其他信息源。

0 个答案:

没有答案