No puedo inyectar un mock utilizando Dagger.
Soy nuevo en Dagger y Mockito. Estoy intentando utilizar un constructor definido en un módulo de Dagger en una prueba unitaria para que el objeto se cree con valores predeterminados.
Este es el módulo:
@Module
class AutoCloseCountDownTimerModule {
@Provides
@Singleton
fun getAutoCloseCountDownTimer(
userInteractionClient: UserInteractionClient,
rxPositionManager: RxPositionManager
): AutoCloseCountDownTimer {
return AutoCloseCountDownTimer(userInteractionClient, rxPositionManager, 15000, 45000)
}
}
Así es como intenté simular la clase AutoCloseCountDown en la prueba unitaria:
@RunWith(MockitoJUnitRunner.class)
public class AutoCloseCountDownTimerTest {
@Mock
private AutoCloseCountDownTimer autoCloseCountDownTimer;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void basicTest() {
final AutoCloseCountDownTimer.Listener mockListener = Mockito.mock(AutoCloseCountDownTimer.Listener.class);
autoCloseCountDownTimer.registerListener(mockListener);
final int expectedValue = 10;
autoCloseCountDownTimer.notifyOnAutoClose(expectedValue);
Mockito.verify(mockListener).onAutoClose(expectedValue);
}
}
¿Cómo puedo lograr que autoclosedCountDownTimer se utilice en la prueba con los valores predefinidos por dagger?
davy.ai
Para usar el objeto AutoCloseCountDownTimer con los valores predefinidos por Dagger en tu prueba unitaria, necesitas crear una versión de prueba del módulo Dagger que proporcione objetos falsos en lugar de la implementación real. Aquí tienes un ejemplo de cómo puedes modificar el código de prueba para lograr esto:
@Module
class TestAutoCloseCountDownTimerModule {
}
Ten en cuenta que en este módulo de prueba estás proporcionando una versión falsa de AutoCloseCountDownTimer en lugar de la implementación real.
@RunWith(MockitoJUnitRunner.class)
public class AutoCloseCountDownTimerTest {
}
En este código de prueba modificado, estás inyectando el objeto AutoCloseCountDownTimer falso utilizando el módulo de prueba que has creado. El objeto se crea con los valores predeterminados definidos en la implementación falsa.
Siguiendo estos pasos, deberías poder utilizar el constructor definido en el módulo Dagger en la prueba unitaria con valores predeterminados.