@Override
  public String fieldSubstitute( String aString, RowMetaInterface rowMeta, Object[] rowData ) throws KettleValueException {
    return variables.fieldSubstitute( aString, rowMeta, rowData );
  }
@Test
  public void testFieldSubstitute() throws Exception {
    // This is just a delegate method, verify it's called
    VariableSpace vars = mock( VariableSpace.class );
    // This method is reused by the stub to set the mock as the variables object
    meta.setInternalKettleVariables( vars );

    RowMetaInterface rowMeta = mock( RowMetaInterface.class );
    Object[] data = new Object[0];
    meta.fieldSubstitute( "?{param}", rowMeta, data );
    verify( vars, times( 1 ) ).fieldSubstitute( "?{param}", rowMeta, data );
  }