diff --git a/tests/src/mocks/trigger_action_mock.hpp b/tests/src/mocks/trigger_action_mock.hpp
new file mode 100644
index 0000000..586ac21
--- /dev/null
+++ b/tests/src/mocks/trigger_action_mock.hpp
@@ -0,0 +1,12 @@
+#pragma once
+
+#include "interfaces/trigger_action.hpp"
+
+#include <gmock/gmock.h>
+
+class TriggerActionMock : public interfaces::TriggerAction
+{
+  public:
+    MOCK_METHOD(void, commit, (const std::string&, uint64_t, double),
+                (override));
+};
diff --git a/tests/src/mocks/trigger_factory_mock.hpp b/tests/src/mocks/trigger_factory_mock.hpp
index b714a44..cf1be55 100644
--- a/tests/src/mocks/trigger_factory_mock.hpp
+++ b/tests/src/mocks/trigger_factory_mock.hpp
@@ -13,39 +13,42 @@
     {
         using namespace testing;
 
-        ON_CALL(*this, make(_, _, _, _, _, _, _, _, _))
-            .WillByDefault(WithArgs<0>(Invoke([](const std::string& name) {
+        ON_CALL(*this, make(_, _, _, _, _, _, _, _, _, _))
+            .WillByDefault(WithArgs<1>(Invoke([](const std::string& name) {
                 return std::make_unique<NiceMock<TriggerMock>>(name);
             })));
     }
 
-    MOCK_METHOD(std::unique_ptr<interfaces::Trigger>, make,
-                (const std::string& name, bool isDiscrete, bool logToJournal,
-                 bool logToRedfish, bool updateReport,
-                 (const std::vector<std::pair<sdbusplus::message::object_path,
-                                              std::string>>& sensors),
-                 const std::vector<std::string>& reportNames,
-                 const TriggerThresholdParams& thresholds,
-                 interfaces::TriggerManager& triggerManager),
-                (const, override));
+    MOCK_METHOD(
+        std::unique_ptr<interfaces::Trigger>, make,
+        (boost::asio::yield_context&, const std::string& name, bool isDiscrete,
+         bool logToJournal, bool logToRedfish, bool updateReport,
+         (const std::vector<
+             std::pair<sdbusplus::message::object_path, std::string>>& sensors),
+         const std::vector<std::string>& reportNames,
+         const TriggerThresholdParams& thresholdParams,
+         interfaces::TriggerManager& triggerManager),
+        (const, override));
 
     auto& expectMake(
         std::optional<std::reference_wrapper<const TriggerParams>> paramsOpt,
         const testing::Matcher<interfaces::TriggerManager&>& tm)
     {
+        using namespace testing;
+
         if (paramsOpt)
         {
             const TriggerParams& params = *paramsOpt;
             return EXPECT_CALL(
-                *this, make(params.name(), params.isDiscrete(),
-                            params.logToJournal(), params.logToRedfish(),
-                            params.updateReport(), params.sensors(),
-                            params.reportNames(), params.thresholds(), tm));
+                *this,
+                make(_, params.name(), params.isDiscrete(),
+                     params.logToJournal(), params.logToRedfish(),
+                     params.updateReport(), params.sensors(),
+                     params.reportNames(), params.thresholdParams(), tm));
         }
         else
         {
-            using testing::_;
-            return EXPECT_CALL(*this, make(_, _, _, _, _, _, _, _, tm));
+            return EXPECT_CALL(*this, make(_, _, _, _, _, _, _, _, _, tm));
         }
     }
 };
