diff --git a/handler.cpp b/handler.cpp
index 3aa14c4..6113f5d 100644
--- a/handler.cpp
+++ b/handler.cpp
@@ -410,7 +410,7 @@
 
 } // namespace
 
-sdbusplus::bus::bus Handler::accelOobGetDbus() const
+sdbusplus::bus::bus Handler::getDbus() const
 {
     return sdbusplus::bus::new_default();
 }
@@ -421,7 +421,7 @@
 
     try
     {
-        auto bus = accelOobGetDbus();
+        auto bus = getDbus();
         auto method = bus.new_method_call(ACCEL_OOB_SERVICE, "/",
                                           "org.freedesktop.DBus.ObjectManager",
                                           "GetManagedObjects");
@@ -444,7 +444,7 @@
 
     try
     {
-        auto bus = accelOobGetDbus();
+        auto bus = getDbus();
         auto method = bus.new_method_call(ACCEL_OOB_SERVICE, "/",
                                           "org.freedesktop.DBus.ObjectManager",
                                           "GetManagedObjects");
@@ -483,7 +483,7 @@
     std::string object_name(ACCEL_OOB_ROOT);
     object_name.append(name);
 
-    auto bus = accelOobGetDbus();
+    auto bus = getDbus();
     auto method = bus.new_method_call(ACCEL_OOB_SERVICE, object_name.c_str(),
                                       ACCEL_OOB_INTERFACE, ACCEL_OOB_METHOD);
     method.append(address, static_cast<uint64_t>(num_bytes));
@@ -577,7 +577,7 @@
 
     try
     {
-        auto bus = accelOobGetDbus();
+        auto bus = getDbus();
         auto method =
             bus.new_method_call(ACCEL_OOB_SERVICE, object_name.c_str(),
                                 ACCEL_OOB_INTERFACE, ACCEL_OOB_METHOD.data());
diff --git a/handler_impl.hpp b/handler_impl.hpp
index 4a3f5dc..a088585 100644
--- a/handler_impl.hpp
+++ b/handler_impl.hpp
@@ -71,7 +71,7 @@
 
   protected:
     // Exposed for dependency injection
-    virtual sdbusplus::bus::bus accelOobGetDbus() const;
+    virtual sdbusplus::bus::bus getDbus() const;
 
   private:
     std::string _configFile;
diff --git a/test/handler_unittest.cpp b/test/handler_unittest.cpp
index 2edb977..5af16ad 100644
--- a/test/handler_unittest.cpp
+++ b/test/handler_unittest.cpp
@@ -146,7 +146,7 @@
     }
 
   protected:
-    sdbusplus::bus::bus accelOobGetDbus() const override
+    sdbusplus::bus::bus getDbus() const override
     {
         return sdbusplus::get_mocked_new(
             const_cast<sdbusplus::SdBusMock*>(mock_));
@@ -299,14 +299,15 @@
     EXPECT_CALL(mock, sd_bus_message_exit_container(msg)).WillOnce(Return(1));
 }
 
-void ExpectSdBusError(StrictMock<sdbusplus::SdBusMock>& mock)
+void ExpectSdBusError(StrictMock<sdbusplus::SdBusMock>& mock,
+                      const std::string& service, const std::string& objPath,
+                      const std::string& interface, const std::string& function)
 {
-    EXPECT_CALL(mock, sd_bus_message_new_method_call(
-                          _,         // sd_bus *bus,
-                          NotNull(), // sd_bus_message **m
-                          StrEq("com.google.custom_accel"), StrEq("/"),
-                          StrEq("org.freedesktop.DBus.ObjectManager"),
-                          StrEq("GetManagedObjects")))
+    EXPECT_CALL(
+        mock, sd_bus_message_new_method_call(_,         // sd_bus *bus,
+                                             NotNull(), // sd_bus_message **m
+                                             StrEq(service), StrEq(objPath),
+                                             StrEq(interface), StrEq(function)))
         .WillOnce(Return(-ENOTCONN));
 }
 
@@ -322,7 +323,8 @@
 {
     StrictMock<sdbusplus::SdBusMock> mock;
     MockDbusHandler h(mock);
-    ExpectSdBusError(mock);
+    ExpectSdBusError(mock, "com.google.custom_accel", "/",
+                     "org.freedesktop.DBus.ObjectManager", "GetManagedObjects");
     EXPECT_THROW(h.accelOobDeviceCount(), IpmiException);
 }
 
@@ -338,7 +340,8 @@
 {
     StrictMock<sdbusplus::SdBusMock> mock;
     MockDbusHandler h(mock);
-    ExpectSdBusError(mock);
+    ExpectSdBusError(mock, "com.google.custom_accel", "/",
+                     "org.freedesktop.DBus.ObjectManager", "GetManagedObjects");
     EXPECT_THROW(h.accelOobDeviceName(0), IpmiException);
 }
 
