diff --git a/src/test/propertywatchtest.cpp b/src/test/propertywatchtest.cpp
index 1cf7729..1c56658 100644
--- a/src/test/propertywatchtest.cpp
+++ b/src/test/propertywatchtest.cpp
@@ -142,24 +142,16 @@
             .WillOnce(Return(GetObject({{"", mapperResponse}})));
         EXPECT_CALL(
             dbus, fwdAddMatch(
-                      sdbusplus::bus::match::rules::member("InterfacesAdded") +
-                          sdbusplus::bus::match::rules::path(path) +
-                          sdbusplus::bus::match::rules::interface(
-                              "org.freedesktop.DBus.ObjectManager"),
-                      _));
+                      sdbusplus::bus::match::rules::interfacesAdded(path), _));
         for (const auto& i : interfaces)
         {
             const auto& interface = i.first.get();
             const auto& properties = i.second;
             EXPECT_CALL(
                 dbus,
-                fwdAddMatch(
-                    sdbusplus::bus::match::rules::member("PropertiesChanged") +
-                        sdbusplus::bus::match::rules::path(path) +
-                        sdbusplus::bus::match::rules::argN(0, interface) +
-                        sdbusplus::bus::match::rules::interface(
-                            "org.freedesktop.DBus.Properties"),
-                    _));
+                fwdAddMatch(sdbusplus::bus::match::rules::propertiesChanged(
+                                path, interface),
+                            _));
 
             PropertiesChanged<T> serviceResponse;
             for (const auto& p : properties)
@@ -177,8 +169,9 @@
     ndx = 0;
     for (auto s : storage)
     {
-        ASSERT_EQ(std::get<0>(s).empty(), false);
-        ASSERT_EQ(any_ns::any_cast<T>(s), ExpectedValues<T>::get(ndx));
+        ASSERT_EQ(std::get<valueIndex>(s).empty(), false);
+        ASSERT_EQ(any_ns::any_cast<T>(std::get<valueIndex>(s)),
+                  ExpectedValues<T>::get(ndx));
         ++ndx;
     }
 
