diff --git a/include/test/mock.h b/include/test/mock.h
index 8910957..86df5e9 100644
--- a/include/test/mock.h
+++ b/include/test/mock.h
@@ -371,6 +371,24 @@
 		struct MOCK(struct_name) *MOCK_INIT_ID(struct_name)(	       \
 				struct test *test)
 
+#define DECLARE_VOID_CLASS_MOCK_HANDLE_INDEX_INTERNAL(name,		       \
+						      handle_index,	       \
+						      return_type,	       \
+						      param_types...)	       \
+		DECLARE_MOCK_COMMON(name,				       \
+				    handle_index,			       \
+				    return_type,			       \
+				    param_types)
+
+#define DECLARE_VOID_CLASS_MOCK_HANDLE_INDEX(name,			       \
+					     handle_index,		       \
+					     return_type,		       \
+					     param_types...)		       \
+		DECLARE_VOID_CLASS_MOCK_HANDLE_INDEX_INTERNAL(name,	       \
+							      handle_index,    \
+							      return_type,     \
+							      param_types)
+
 /**
  * CONSTRUCT_MOCK()
  * @struct_name: name of the class
@@ -621,6 +639,41 @@
 			return mock_obj;				       \
 		}
 
+struct MOCK(void) {
+	struct mock	ctrl;
+	void		*trgt;
+};
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
+static inline struct mock *from_void_ptr_to_mock(const void *ptr)
+{
+	struct MOCK(void) *mock_void_ptr = ptr;
+
+	return mock_get_ctrl(mock_void_ptr);
+}
+#pragma GCC diagnostic pop
+
+#define DEFINE_VOID_CLASS_MOCK_HANDLE_INDEX_INTERNAL(name,		       \
+						     handle_index,	       \
+						     return_type,	       \
+						     param_types...)	       \
+		DEFINE_MOCK_COMMON(name,				       \
+				   handle_index,			       \
+				   from_void_ptr_to_mock,		       \
+				   return_type,				       \
+				   param_types)
+#define DEFINE_VOID_CLASS_MOCK_HANDLE_INDEX(name,			       \
+					    handle_index,		       \
+					    return_type,		       \
+					    param_types...)		       \
+		DEFINE_VOID_CLASS_MOCK_HANDLE_INDEX_INTERNAL(name,	       \
+							     handle_index,     \
+							     return_type,      \
+							     param_types)
+
+DECLARE_STRUCT_CLASS_MOCK_INIT(void);
+
 #define CONVERT_TO_ACTUAL_TYPE(type, ptr) (*((type *) ptr))
 
 /**
diff --git a/test/mock-macro-test.c b/test/mock-macro-test.c
index 48d9478..d675d1d 100644
--- a/test/mock-macro-test.c
+++ b/test/mock-macro-test.c
@@ -39,8 +39,19 @@
 
 DEFINE_STRUCT_CLASS_MOCK_INIT(test_struct, test_struct_init);
 
+DECLARE_VOID_CLASS_MOCK_HANDLE_INDEX(METHOD(test_void_ptr_func),
+				     HANDLE_INDEX(0),
+				     RETURNS(int),
+				     PARAMS(void*, int));
+
+DEFINE_VOID_CLASS_MOCK_HANDLE_INDEX(METHOD(test_void_ptr_func),
+				    HANDLE_INDEX(0),
+				    RETURNS(int),
+				    PARAMS(void*, int));
+
 struct mock_macro_context {
 	struct MOCK(test_struct) *mock_test_struct;
+	struct MOCK(void) *mock_void_ptr;
 };
 
 #define TO_STR_INTERNAL(...) #__VA_ARGS__
@@ -176,6 +187,19 @@
 	test_struct->non_first_slot_param(5, test_struct);
 }
 
+static void mock_macro_test_generated_method_void_code_works(struct test *test)
+{
+	struct mock_macro_context *ctx = test->priv;
+	struct MOCK(void) *mock_void_ptr = ctx->mock_void_ptr;
+	struct mock_expectation *handle;
+
+	handle = EXPECT_CALL(test_void_ptr_func(mock_get_ctrl(mock_void_ptr),
+						int_eq(test, 3)));
+	handle->action = int_return(test, 0);
+
+	test_void_ptr_func(mock_void_ptr, 3);
+}
+
 static int mock_macro_test_init(struct test *test)
 {
 	struct mock_macro_context *ctx;
@@ -189,6 +213,10 @@
 	if (!ctx->mock_test_struct)
 		return -EINVAL;
 
+	ctx->mock_void_ptr = CONSTRUCT_MOCK(void, test);
+	if (!ctx->mock_void_ptr)
+		return -EINVAL;
+
 	return 0;
 }
 
@@ -201,6 +229,7 @@
 	TEST_CASE(mock_macro_param_list_from_types_basic),
 	TEST_CASE(mock_macro_arg_names_from_types),
 	TEST_CASE(mock_macro_test_generated_method_code_works),
+	TEST_CASE(mock_macro_test_generated_method_void_code_works),
 	{},
 };
 
diff --git a/test/mock.c b/test/mock.c
index f55f488..25bf6fe 100644
--- a/test/mock.c
+++ b/test/mock.c
@@ -1,5 +1,14 @@
 #include <test/mock.h>
 
+static int mock_void_ptr_init(struct MOCK(void) *mock_void_ptr)
+{
+	mock_void_ptr->trgt = mock_void_ptr;
+
+	return 0;
+}
+
+DEFINE_STRUCT_CLASS_MOCK_INIT(void, mock_void_ptr_init);
+
 static bool mock_match_params(struct mock_matcher *matcher,
 		       struct test_stream *stream,
 		       const void **params,
