diff --git a/tests/fw/strategy-tester.hpp b/tests/fw/strategy-tester.hpp
new file mode 100644
index 0000000..785fd18
--- /dev/null
+++ b/tests/fw/strategy-tester.hpp
@@ -0,0 +1,64 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (C) 2014 Named Data Networking Project
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NFD_TEST_FW_STRATEGY_TESTER_HPP
+#define NFD_TEST_FW_STRATEGY_TESTER_HPP
+
+#include <boost/tuple/tuple_comparison.hpp>
+#include "fw/strategy.hpp"
+
+namespace nfd {
+
+/** \class StrategyTester
+ *  \brief extends strategy S for unit testing
+ *
+ *  Actions invoked by S are recorded but not passed to forwarder
+ */
+template<typename S>
+class StrategyTester : public S
+{
+public:
+  explicit
+  StrategyTester(Forwarder& forwarder)
+    : S(forwarder)
+  {
+  }
+
+protected:
+  virtual void
+  sendInterest(shared_ptr<pit::Entry> pitEntry,shared_ptr<Face> outFace);
+
+  virtual void
+  rebuffPendingInterest(shared_ptr<pit::Entry> pitEntry);
+
+public:
+  typedef boost::tuple<shared_ptr<pit::Entry>, shared_ptr<Face> > SendInterestArgs;
+  std::vector<SendInterestArgs> m_sendInterestHistory;
+
+  typedef boost::tuple<shared_ptr<pit::Entry> > RebuffPendingInterestArgs;
+  std::vector<RebuffPendingInterestArgs> m_rebuffPendingInterestHistory;
+};
+
+
+template<typename S>
+inline void
+StrategyTester<S>::sendInterest(shared_ptr<pit::Entry> pitEntry,
+                                shared_ptr<Face> outFace)
+{
+  m_sendInterestHistory.push_back(SendInterestArgs(pitEntry, outFace));
+}
+
+template<typename S>
+inline void
+StrategyTester<S>::rebuffPendingInterest(shared_ptr<pit::Entry> pitEntry)
+{
+  m_rebuffPendingInterestHistory.push_back(RebuffPendingInterestArgs(pitEntry));
+}
+
+
+} // namespace nfd
+
+#endif // TEST_FW_STRATEGY_TESTER_HPP
