diff --git a/test/env.cpp b/test/env.cpp
new file mode 100644
index 0000000..934b9a0
--- /dev/null
+++ b/test/env.cpp
@@ -0,0 +1,31 @@
+#include "env_mock.hpp"
+
+// Set this before each test that hits a call to getEnv().
+EnvInterface* envIntf = nullptr;
+
+namespace env
+{
+
+std::string getEnv(const char* key)
+{
+    return (envIntf) ? envIntf->getEnv(key) : "";
+}
+
+std::string getEnv(const char* prefix, const SensorSet::key_type& sensor)
+{
+    return (envIntf) ? envIntf->getEnv(prefix, sensor) : "";
+}
+
+std::string getEnv(const char* prefix, const std::string& type,
+                   const std::string& id)
+{
+    return (envIntf) ? envIntf->getEnv(prefix, type, id) : "";
+}
+
+std::string getIndirectID(std::string path, const std::string& fileSuffix,
+                          const SensorSet::key_type& sensor)
+{
+    return (envIntf) ? envIntf->getIndirectID(path, fileSuffix, sensor) : "";
+}
+
+} // namespace env
diff --git a/test/env_mock.hpp b/test/env_mock.hpp
new file mode 100644
index 0000000..4cf232f
--- /dev/null
+++ b/test/env_mock.hpp
@@ -0,0 +1,40 @@
+#pragma once
+
+#include "sensorset.hpp"
+
+#include <string>
+
+#include <gmock/gmock.h>
+
+class EnvInterface
+{
+  public:
+    virtual ~EnvInterface() = default;
+
+    virtual std::string getEnv(const char* key) const = 0;
+    virtual std::string getEnv(const char* prefix,
+                               const SensorSet::key_type& sensor) const = 0;
+    virtual std::string getEnv(const char* prefix, const std::string& type,
+                               const std::string& id) const = 0;
+    virtual std::string
+        getIndirectID(std::string path, const std::string& fileSuffix,
+                      const SensorSet::key_type& sensor) const = 0;
+};
+
+class EnvMock : public EnvInterface
+{
+  public:
+    virtual ~EnvMock() = default;
+
+    MOCK_CONST_METHOD1(getEnv, std::string(const char*));
+    MOCK_CONST_METHOD2(getEnv,
+                       std::string(const char*, const SensorSet::key_type&));
+    MOCK_CONST_METHOD3(getEnv, std::string(const char*, const std::string&,
+                                           const std::string&));
+    MOCK_CONST_METHOD3(getIndirectID,
+                       std::string(std::string, const std::string&,
+                                   const SensorSet::key_type&));
+};
+
+// Set this before each test that hits a call to getEnv().
+extern EnvInterface* envIntf;
