@InvokeOnHeader(Web3jConstants.ETH_GET_STORAGE_AT)
    void ethGetStorageAt(Message message) throws IOException {
        String address = message.getHeader(Web3jConstants.ADDRESS, configuration::getAddress, String.class);
        DefaultBlockParameter atBlock
                = toDefaultBlockParameter(message.getHeader(Web3jConstants.AT_BLOCK, configuration::getAtBlock, String.class));
        BigInteger position = message.getHeader(Web3jConstants.POSITION, configuration::getPosition, BigInteger.class);
        Request<?, EthGetStorageAt> request = web3j.ethGetStorageAt(address, position, atBlock);
        setRequestId(message, request);
        EthGetStorageAt response = request.send();
        boolean hasError = checkForError(message, response);
        if (!hasError) {
            message.setBody(response.getData());
        }
    }
@Test
    public void ethGetStorageAtTest() throws Exception {
        EthGetStorageAt response = Mockito.mock(EthGetStorageAt.class);
        Mockito.when(mockWeb3j.ethGetStorageAt(any(), any(), any())).thenReturn(request);
        Mockito.when(request.send()).thenReturn(response);
        Mockito.when(response.getData()).thenReturn("test");

        Exchange exchange = createExchangeWithBodyAndHeader(null, OPERATION, Web3jConstants.ETH_GET_STORAGE_AT);
        template.send(exchange);
        String body = exchange.getIn().getBody(String.class);
        assertEquals("test", body);
    }