skydoves / PreferenceRoom

:truck: Android processing library for managing SharedPreferences persistence efficiently and structurally.
Apache License 2.0
378 stars 26 forks source link

Robolectric Testing #27

Open Dalakoti07 opened 2 years ago

Dalakoti07 commented 2 years ago

Hi @skydoves, I am using the library and injecting component like this the fragment with Hilt as DI framework. @Inject lateinit var appSettingsComponent: PreferenceComponent_AppSettingsComponent

Now I am creating corresponding test class for this fragment, but I am unable to mockk the component class and inject in the fragment.

One of the possible solution is to uninstall the PrefModule and bind own fake AppSettingComponentImpl.

@skydoves is there a better than creating fakes, un-installing and binding the fake implementation.

Some magic stuff which works out of the box

skydoves commented 2 years ago

Hi @Dalakoti07! I think creating mocked component/entity implementations is the best solution now. ​ If I find any nicer solutions, I'll share them with you!

Dalakoti07 commented 2 years ago

Thanks

Dalakoti07 commented 2 years ago

Hi @skydoves

Can you please tell exactly how to mock component/entity implementation.

One of the boolean value is false by default (which is a happy path), I want to test unhappy-path, where boolean is true.

How can I achieve this?