Java >> Tutorial de Java >  >> Tag >> String

¿Cómo burlarse de ResourceBundle.getString()?

En lugar de burlarse, puede crear una implementación ficticia de ResourceBundle y luego pasarla en .thenReturn(resourceBundle) :

    import java.util.ResourceBundle;

    ResourceBundle dummyResourceBundle = new ResourceBundle() {
        @Override
        protected Object handleGetObject(String key) {
            return "fake_translated_value";
        }

        @Override
        public Enumeration<String> getKeys() {
            return Collections.emptyEnumeration();
        }
    };

    // Example usage
    when(request.getResourceBundle(any(Locale.class))).thenReturn(dummyResourceBundle)

Si necesita las claves y los valores reales, deberá proporcionar una implementación para getKeys() , p.ej. un hashmap para almacenamiento y búsqueda de claves.


Encontrará un ejemplo de solución a continuación:

@RunWith(PowerMockRunner.class)
@PrepareForTest({ ResourceBundle.class })
public class ResourceBundleTest {

    @Test
    public void getStringByPowerMock() throws Exception {   
        ResourceBundle resourceBundle = PowerMockito.mock(ResourceBundle.class);
        Mockito.when(resourceBundle.getString(Mockito.anyString())).thenReturn("Hello world....");
        System.out.println(resourceBundle.getString("keyword"));
    }

}

Etiqueta Java