diff --git a/test/TestBmcEpoch.cpp b/test/TestBmcEpoch.cpp
index 0f4dbea..aee19f9 100644
--- a/test/TestBmcEpoch.cpp
+++ b/test/TestBmcEpoch.cpp
@@ -1,6 +1,7 @@
 #include "config.h"
 
 #include "bmc_epoch.hpp"
+#include "manager.hpp"
 #include "types.hpp"
 
 #include <sdbusplus/bus.hpp>
@@ -16,15 +17,16 @@
 {
   public:
     sdbusplus::bus_t bus;
+    Manager manager;
     sd_event* event;
     std::unique_ptr<BmcEpoch> bmcEpoch;
 
-    TestBmcEpoch() : bus(sdbusplus::bus::new_default())
+    TestBmcEpoch() : bus(sdbusplus::bus::new_default()), manager(bus)
     {
         // BmcEpoch requires sd_event to init
         sd_event_default(&event);
         bus.attach_event(event, SD_EVENT_PRIORITY_NORMAL);
-        bmcEpoch = std::make_unique<BmcEpoch>(bus, OBJPATH_BMC);
+        bmcEpoch = std::make_unique<BmcEpoch>(bus, OBJPATH_BMC, manager);
     }
 
     ~TestBmcEpoch()
@@ -32,31 +34,21 @@
         bus.detach_event();
         sd_event_unref(event);
     }
-
-    // Proxies for BmcEpoch's private members and functions
-    Mode getTimeMode()
-    {
-        return bmcEpoch->timeMode;
-    }
-    void setTimeMode(Mode mode)
-    {
-        bmcEpoch->timeMode = mode;
-    }
 };
 
 TEST_F(TestBmcEpoch, onModeChange)
 {
     bmcEpoch->onModeChanged(Mode::NTP);
-    EXPECT_EQ(Mode::NTP, getTimeMode());
+    EXPECT_EQ(Mode::NTP, manager.getTimeMode());
 
     bmcEpoch->onModeChanged(Mode::Manual);
-    EXPECT_EQ(Mode::Manual, getTimeMode());
+    EXPECT_EQ(Mode::Manual, manager.getTimeMode());
 }
 
 TEST_F(TestBmcEpoch, empty)
 {
     // Default mode is MANUAL
-    EXPECT_EQ(Mode::Manual, getTimeMode());
+    EXPECT_EQ(Mode::Manual, manager.getTimeMode());
 }
 
 TEST_F(TestBmcEpoch, getElapsed)
diff --git a/test/TestManager.cpp b/test/TestManager.cpp
index 2f5990c..f64b3a0 100644
--- a/test/TestManager.cpp
+++ b/test/TestManager.cpp
@@ -22,11 +22,6 @@
     TestManager() : bus(sdbusplus::bus::new_default()), manager(bus)
     {}
 
-    // Proxies for Manager's private members and functions
-    Mode getTimeMode()
-    {
-        return manager.timeMode;
-    }
     void notifyPropertyChanged(const std::string& key, const std::string& value)
     {
         manager.onPropertyChanged(key, value);
@@ -38,12 +33,12 @@
     notifyPropertyChanged(
         "TimeSyncMethod",
         "xyz.openbmc_project.Time.Synchronization.Method.Manual");
-    EXPECT_EQ(Mode::Manual, getTimeMode());
+    EXPECT_EQ(Mode::Manual, manager.getTimeMode());
 
     notifyPropertyChanged(
         "TimeSyncMethod",
         "xyz.openbmc_project.Time.Synchronization.Method.NTP");
-    EXPECT_EQ(Mode::NTP, getTimeMode());
+    EXPECT_EQ(Mode::NTP, manager.getTimeMode());
 
     ASSERT_DEATH(notifyPropertyChanged("invalid property", "whatever"), "");
 }
