Тестирование BaseActivity - PullRequest
       29

Тестирование BaseActivity

0 голосов
/ 11 сентября 2018

У меня есть BaseActivity, которая имеет поведение Dagger внутри:

abstract class BaseActivity : DaggerAppCompatActivity(), HasSupportFragmentInjector {  
@Inject
lateinit var fragmentDispatchingAndroidInjector: DispatchingAndroidInjector<Fragment>

override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
    AndroidInjection.inject(this)
    super.onCreate(savedInstanceState, persistentState)
 /**
 * Method that gets called after the [onCreate] method
 */
public override fun onPostCreate(savedInstanceState: Bundle?) {
    super.onPostCreate(savedInstanceState)
    applyDebugOverlay(this)
}

override fun supportFragmentInjector() = fragmentDispatchingAndroidInjector
}

Теперь я хочу проверить, что applyDebugOverlay (это) вызывает. Для этого я использую Robolectric в моем AbstractActivityTest

   @Test
fun testDebugOverlayIsShown() {
    underTest.onPostCreate(Bundle())
    val buildTimeStamp = underTest.inc_debugOverlay_tv_date.text

    assert(buildTimeStamp.isNotEmpty())
}

Но я получаю сообщение об ошибке «Нет фабрики инжекторов, привязанных к классу», и невозможно связать BaseActivity с @ContributesAndroidInjector в моем классе ActivityBuilder (будет получена другая ошибка).

...