DaggerMock icon indicating copy to clipboard operation
DaggerMock copied to clipboard

DaggerMock rule in Espresso with injected dependencies used in App's onCreate

Open mariusgherman opened this issue 7 years ago • 1 comments
trafficstars

I want to write an Espresso test and mock dependencies that are also used in Application's onCreate.

I have an app that needs to register lifecycle observers in Application onCreate. The lifecycle observer is an @Inject dependency

public class MyApplication extends Application {
        @Inject
        lateinit var lifecycleObserver: LifecycleObserver

        override fun onCreate() {
            super.onCreate()
            inject()
            ProcessLifecycleOwner.get().getLifecycle().addObserver(lifecycleObserver);
        }
}

What I'm seeing that the DaggerMock rule is created after the App onCreate is called in my Espresso test.

Is there anyway around this, to get my DaggerMock rule created before my Application's onCreate and provide me a mock of lifecycleObserver ? Thanks

mariusgherman avatar Nov 08 '18 15:11 mariusgherman

Hi, sorry for the late answer :( I am not sure if you can create before the app is created because usually you need the application object to create the Dagger component. How do you set the component in the application object? Maybe you can inject the app again and register the observer when you set the component created by DaggerMock.

fabioCollini avatar Dec 21 '18 07:12 fabioCollini