public Object get() {
        return get(this.timeoutMills, TimeUnit.MILLISECONDS);
    }
@Test
    void testGet() throws NoSuchFieldException, IllegalAccessException, ExecutionException, InterruptedException, TimeoutException {
        // mainly test exception scene
        ConfigFuture configFuture = Mockito.spy(new ConfigFuture("file.conf", "defaultValue", ConfigFuture.ConfigOperation.GET));

        Field originField = ReflectionUtil.getField(ConfigFuture.class, "origin");
        CompletableFuture<Object> origin = (CompletableFuture<Object>) originField.get(configFuture);
        // mock field
        origin = Mockito.spy(origin);
        // set mocked field to object
        originField.setAccessible(true);
        originField.set(configFuture, origin);

        Mockito.doThrow(ExecutionException.class).when(origin).get(Mockito.anyLong(), Mockito.any());
        Assertions.assertThrows(ShouldNeverHappenException.class, configFuture::get);
        
        Mockito.doThrow(TimeoutException.class).when(origin).get(Mockito.anyLong(), Mockito.any());
        Assertions.assertEquals("defaultValue", configFuture.get());
        
        Mockito.doThrow(InterruptedException.class).when(origin).get(Mockito.anyLong(), Mockito.any());
        Assertions.assertEquals("defaultValue", configFuture.get());

        Mockito.doReturn(null).when(origin).get(Mockito.anyLong(), Mockito.any());
        Assertions.assertEquals("defaultValue", configFuture.get());
        

        // set another config operation
        configFuture.setOperation(ConfigFuture.ConfigOperation.PUT);

        Mockito.doThrow(ExecutionException.class).when(origin).get(Mockito.anyLong(), Mockito.any());
        Assertions.assertThrows(ShouldNeverHappenException.class, configFuture::get);

        Mockito.doThrow(TimeoutException.class).when(origin).get(Mockito.anyLong(), Mockito.any());
        Assertions.assertEquals(Boolean.FALSE, configFuture.get());

        Mockito.doThrow(InterruptedException.class).when(origin).get(Mockito.anyLong(), Mockito.any());
        Assertions.assertEquals(Boolean.FALSE, configFuture.get());
        
        Mockito.doReturn(null).when(origin).get(Mockito.anyLong(), Mockito.any());
        Assertions.assertEquals(Boolean.FALSE, configFuture.get());
    }