public Object execute(final List<String> keys, final List<String> args) {
    return redisCluster.withCluster(connection ->
        execute(connection, keys.toArray(STRING_ARRAY), args.toArray(STRING_ARRAY)));
  }
@Test
  void testExecute() {
    final RedisAdvancedClusterCommands<String, String> commands = mock(RedisAdvancedClusterCommands.class);
    final FaultTolerantRedisCluster mockCluster = RedisClusterHelper.builder().stringCommands(commands).build();

    final String script = "return redis.call(\"SET\", KEYS[1], ARGV[1])";
    final ScriptOutputType scriptOutputType = ScriptOutputType.VALUE;
    final List<String> keys = List.of("key");
    final List<String> values = List.of("value");

    when(commands.evalsha(any(), any(), any(), any())).thenReturn("OK");

    final ClusterLuaScript luaScript = new ClusterLuaScript(mockCluster, script, scriptOutputType);
    luaScript.execute(keys, values);

    verify(commands).evalsha(luaScript.getSha(), scriptOutputType, keys.toArray(new String[0]), values.toArray(new String[0]));
    verify(commands, never()).eval(anyString(), any(), any(), any());
  }