我正在尝试使用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或其他信息源。