diff --git a/src/test/java/com/google/devtools/build/skyframe/GraphTester.java b/src/test/java/com/google/devtools/build/skyframe/GraphTester.java
index db686b2..04d76db 100644
--- a/src/test/java/com/google/devtools/build/skyframe/GraphTester.java
+++ b/src/test/java/com/google/devtools/build/skyframe/GraphTester.java
@@ -13,10 +13,13 @@
 // limitations under the License.
 package com.google.devtools.build.skyframe;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.util.Pair;
+import com.google.devtools.build.skyframe.SkyFunction.Environment;
 import com.google.devtools.build.skyframe.SkyFunctionException.Transience;
 
 import java.util.Collection;
@@ -308,6 +311,15 @@
     public String toString() {
       return "StringValue: " + getValue();
     }
+
+    public static StringValue of(String string) {
+      return new StringValue(string);
+    }
+
+    public static StringValue from(SkyValue skyValue) {
+      assertThat(skyValue).isInstanceOf(StringValue.class);
+      return (StringValue) skyValue;
+    }
   }
 
   /**
@@ -336,4 +348,14 @@
       return new StringValue(result.toString());
     }
   };
+
+  public static ValueComputer formatter(final SkyKey key, final String format) {
+    return new ValueComputer() {
+      @Override
+      public SkyValue compute(Map<SkyKey, SkyValue> deps, Environment env)
+          throws InterruptedException {
+        return StringValue.of(String.format(format, StringValue.from(deps.get(key)).getValue()));
+      }
+    };
+  }
 }
