Модель представления модульного тестирования

Я пытаюсь использовать шаблон проектирования 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 или другой источник информации.

На самом деле я выяснил, в чем проблема. Var userRepository: UserRepositoryImpl должен иметь тип UserRepository.

Marius Gheorghe 10.08.2018 17:48
2
1
343
0

Другие вопросы по теме