I have a custom animation that I pass during navigation in my fragments, How can I pass a navOptions to navigation during testing. Here is my custom navOption
fun Fragment.customNavAnimation(): NavOptions.Builder {
val navBuilder: NavOptions.Builder = NavOptions.Builder()
navBuilder.setEnterAnim(R.anim.slide_in_right).setExitAnim(R.anim.slide_out_left)
.setPopEnterAnim(R.anim.slide_in_left).setPopExitAnim(R.anim.slide_out_right)
return navBuilder
Here is how I passed it
ui.loginBtn.setOnClickListener {
findNavController().navigate(R.id.loginFragment, null, customNavAnimation().build())
}
Here is my test
@Test
fun clickCreateAccountButton_NavigateToSignUpFragment(){
//creates a mock of the navController class
val navController = Mockito.mock(NavController::class.java)
//launch fragment
launchFragmentInHiltContainer<LandingFragment> {
//assign a new navController to this fragment
Navigation.setViewNavController(requireView(), navController)
}
//click on create account button
Espresso.onView(withId(R.id.create_account_btn))
.perform(ViewActions.click())
//verify if navController was called
Mockito.verify(navController).navigate(R.id.registerFragment, null, null )
}
when I pass in null as navOptions I get this error
Argument(s) are different! Wanted: navController.navigate( 2131362353, null, null ); -> at com.plentahub.breezcoins_android.ui.LandingFragmentTest.clickCreateAccountButton_NavigateToSignUpFragment(LandingFragmentTest.kt:51) Actual invocation has different arguments: navController.navigate( 2131362353, null, androidx.navigation.NavOptions@369fdd89 );
My problem now is how to pass in the custom navOptions
Aucun commentaire:
Enregistrer un commentaire