diff --git a/dbus/dbusactiveread.cpp b/dbus/dbusactiveread.cpp
index 5e046a4..e41ba7a 100644
--- a/dbus/dbusactiveread.cpp
+++ b/dbus/dbusactiveread.cpp
@@ -27,7 +27,7 @@
     struct SensorProperties settings;
     double value;
 
-    GetProperties(_bus, _service, _path, &settings);
+    _helper->GetProperties(_bus, _service, _path, &settings);
 
     value = settings.value * pow(10, settings.scale);
 
diff --git a/dbus/dbusactiveread.hpp b/dbus/dbusactiveread.hpp
index a9146b9..85380fb 100644
--- a/dbus/dbusactiveread.hpp
+++ b/dbus/dbusactiveread.hpp
@@ -1,13 +1,12 @@
 #pragma once
 
 #include <memory>
+#include <sdbusplus/bus.hpp>
 #include <string>
 
-#include <sdbusplus/bus.hpp>
-
+#include "dbus/util.hpp"
 #include "interfaces.hpp"
 
-
 /*
  * This ReadInterface will actively reach out over dbus upon calling read to
  * get the value from whomever owns the associated dbus path.
@@ -17,11 +16,13 @@
     public:
         DbusActiveRead(sdbusplus::bus::bus& bus,
                        const std::string& path,
-                       const std::string& service)
+                       const std::string& service,
+                       DbusHelperInterface *helper)
             : ReadInterface(),
               _bus(bus),
               _path(path),
-              _service(service)
+              _service(service),
+              _helper(helper)
         { }
 
         ReadReturn read(void) override;
@@ -30,4 +31,5 @@
         sdbusplus::bus::bus& _bus;
         const std::string _path;
         const std::string _service; // the sensor service.
+        DbusHelperInterface *_helper;
 };
diff --git a/dbus/dbuspassive.cpp b/dbus/dbuspassive.cpp
index 038fc5c..6b4ea5f 100644
--- a/dbus/dbuspassive.cpp
+++ b/dbus/dbuspassive.cpp
@@ -23,20 +23,22 @@
 DbusPassive::DbusPassive(
     sdbusplus::bus::bus& bus,
     const std::string& type,
-    const std::string& id)
+    const std::string& id,
+    DbusHelperInterface *helper)
     : ReadInterface(),
       _bus(bus),
       _signal(bus, GetMatch(type, id).c_str(), DbusHandleSignal, this),
-      _id(id)
+      _id(id),
+      _helper(helper)
 {
     /* Need to get the scale and initial value */
     auto tempBus = sdbusplus::bus::new_default();
     /* service == busname */
     std::string path = GetSensorPath(type, id);
-    std::string service = GetService(tempBus, sensorintf, path);
+    std::string service = _helper->GetService(tempBus, sensorintf, path);
 
     struct SensorProperties settings;
-    GetProperties(tempBus, service, path, &settings);
+    _helper->GetProperties(tempBus, service, path, &settings);
 
     _scale = settings.scale;
     _value = settings.value * pow(10, _scale);
diff --git a/dbus/dbuspassive.hpp b/dbus/dbuspassive.hpp
index 36e0ac1..8ecfe71 100644
--- a/dbus/dbuspassive.hpp
+++ b/dbus/dbuspassive.hpp
@@ -10,7 +10,6 @@
 #include <tuple>
 #include <vector>
 
-
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/message.hpp>
 #include <sdbusplus/server.hpp>
@@ -36,7 +35,8 @@
     public:
         DbusPassive(sdbusplus::bus::bus& bus,
                     const std::string& type,
-                    const std::string& id);
+                    const std::string& id,
+                    DbusHelperInterface *helper);
 
         ReadReturn read(void) override;
 
@@ -49,6 +49,7 @@
         sdbusplus::server::match::match _signal;
         int64_t _scale;
         std::string _id; // for debug identification
+        DbusHelperInterface *_helper;
 
         std::mutex _lock;
         double _value = 0;
@@ -56,3 +57,4 @@
         std::chrono::high_resolution_clock::time_point _updated;
 };
 
+int HandleSensorValue(sdbusplus::message::message& msg, DbusPassive* owner);
diff --git a/dbus/util.cpp b/dbus/util.cpp
index 7e1f9a5..f0ffffb 100644
--- a/dbus/util.cpp
+++ b/dbus/util.cpp
@@ -9,9 +9,9 @@
 /* TODO(venture): Basically all phosphor apps need this, maybe it should be a
  * part of sdbusplus.  There is an old version in libmapper.
  */
-std::string GetService(sdbusplus::bus::bus& bus,
-                       const std::string& intf,
-                       const std::string& path)
+std::string DbusHelper::GetService(sdbusplus::bus::bus& bus,
+                                   const std::string& intf,
+                                   const std::string& path)
 {
     auto mapper = bus.new_method_call(
                       "xyz.openbmc_project.ObjectMapper",
@@ -39,12 +39,11 @@
     return response.begin()->first;
 }
 
-void GetProperties(sdbusplus::bus::bus& bus,
-                   const std::string& service,
-                   const std::string& path,
-                   struct SensorProperties* prop)
+void DbusHelper::GetProperties(sdbusplus::bus::bus& bus,
+                               const std::string& service,
+                               const std::string& path,
+                               struct SensorProperties* prop)
 {
-
     auto pimMsg = bus.new_method_call(service.c_str(),
                                       path.c_str(),
                                       propertiesintf.c_str(),
@@ -69,9 +68,12 @@
     valueResponseMsg.read(propMap);
 
     // If no error was set, the values should all be there.
-    prop->unit = sdbusplus::message::variant_ns::get<std::string>(propMap["Unit"]);
-    prop->scale = sdbusplus::message::variant_ns::get<int64_t>(propMap["Scale"]);
-    prop->value = sdbusplus::message::variant_ns::get<int64_t>(propMap["Value"]);
+    prop->unit = sdbusplus::message::variant_ns::get<std::string>(
+        propMap["Unit"]);
+    prop->scale = sdbusplus::message::variant_ns::get<int64_t>(
+        propMap["Scale"]);
+    prop->value = sdbusplus::message::variant_ns::get<int64_t>(
+        propMap["Value"]);
 
     return;
 }
diff --git a/dbus/util.hpp b/dbus/util.hpp
index 3ff2424..e858c0c 100644
--- a/dbus/util.hpp
+++ b/dbus/util.hpp
@@ -9,21 +9,52 @@
     std::string unit;
 };
 
-/*
- * Retrieve the dbus bus (or service) for the given object and interface.
- */
-std::string GetService(sdbusplus::bus::bus& bus,
-                       const std::string& intf,
-                       const std::string& path);
-
-void GetProperties(sdbusplus::bus::bus& bus,
-                   const std::string& service,
-                   const std::string& path,
-                   struct SensorProperties* prop);
-
-std::string GetSensorPath(const std::string& type, const std::string& id);
-std::string GetMatch(const std::string& type, const std::string& id);
-
 const std::string sensorintf = "xyz.openbmc_project.Sensor.Value";
 const std::string propertiesintf = "org.freedesktop.DBus.Properties";
 
+class DbusHelperInterface
+{
+    public:
+        virtual ~DbusHelperInterface() = default;
+
+        /** @brief Get the service providing the interface for the path.
+         */
+        virtual std::string GetService(sdbusplus::bus::bus& bus,
+                                       const std::string& intf,
+                                       const std::string& path) = 0;
+
+        /** @brief Get all Sensor.Value properties for a service and path.
+         *
+         * @param[in] bus - A bus to use for the call.
+         * @param[in] service - The service providing the interface.
+         * @param[in] path - The dbus path.
+         * @param[out] prop - A pointer to a properties struct to fill out.
+         */
+        virtual void GetProperties(sdbusplus::bus::bus& bus,
+                                   const std::string& service,
+                                   const std::string& path,
+                                   struct SensorProperties* prop) = 0;
+};
+
+class DbusHelper : public DbusHelperInterface
+{
+    public:
+        DbusHelper() = default;
+        ~DbusHelper() = default;
+        DbusHelper(const DbusHelper&) = default;
+        DbusHelper& operator=(const DbusHelper&) = default;
+        DbusHelper(DbusHelper&&) = default;
+        DbusHelper& operator=(DbusHelper&&) = default;
+
+        std::string GetService(sdbusplus::bus::bus& bus,
+                               const std::string& intf,
+                               const std::string& path) override;
+
+        void GetProperties(sdbusplus::bus::bus& bus,
+                           const std::string& service,
+                           const std::string& path,
+                           struct SensorProperties* prop) override;
+};
+
+std::string GetSensorPath(const std::string& type, const std::string& id);
+std::string GetMatch(const std::string& type, const std::string& id);
diff --git a/sensors/builder.cpp b/sensors/builder.cpp
index 4654e51..9ab6a8c 100644
--- a/sensors/builder.cpp
+++ b/sensors/builder.cpp
@@ -34,6 +34,7 @@
 #include "util.hpp"
 
 static constexpr bool deferSignals = true;
+static DbusHelper helper;
 
 SensorManager BuildSensors(
     const std::map<std::string, struct sensor>& config)
@@ -68,7 +69,8 @@
                 ri = std::make_unique<DbusPassive>(
                          PassiveListeningBus,
                          info->type,
-                         name);
+                         name,
+                         &helper);
                 break;
             case IOInterfaceType::EXTERNAL:
                 // These are a special case for read-only.
diff --git a/test/dbushelper_mock.hpp b/test/dbushelper_mock.hpp
new file mode 100644
index 0000000..23dd81c
--- /dev/null
+++ b/test/dbushelper_mock.hpp
@@ -0,0 +1,21 @@
+#pragma once
+
+#include <gmock/gmock.h>
+#include <sdbusplus/bus.hpp>
+#include <string>
+
+#include "dbus/util.hpp"
+
+class DbusHelperMock : public DbusHelperInterface
+{
+    public:
+        virtual ~DbusHelperMock() = default;
+
+        MOCK_METHOD3(GetService, std::string(sdbusplus::bus::bus&,
+                                             const std::string&,
+                                             const std::string&));
+        MOCK_METHOD4(GetProperties, void(sdbusplus::bus::bus&,
+                                         const std::string&,
+                                         const std::string&,
+                                         struct SensorProperties*));
+};
