def METHOD_NAME(monkeypatch):
    def add_recovery_func(task, module_name, params):
        class FakeRecovery(object):
            task_proxy = None
            args = None
            @classmethod
            def call(cls, task_proxy, *args):
                cls.task_proxy = task_proxy
                cls.args = args
        # Create a recovery module with the passed module name
        module = types.ModuleType(module_name)
        module.FakeRecovery = FakeRecovery
        # Verify that the fully qualified name of the module is unique
        full_name = "vdsm.storage.{}".format(module_name)
        if full_name in sys.modules:
            raise RuntimeError("Module {} already exists".format(module_name))
        # Set task's recovery lookup to refer to our local Recovery class
        monkeypatch.setattr(full_name, module, raising=False)
        monkeypatch.setitem(sys.modules, full_name, module)
        r = Recovery(module_name, module_name, "FakeRecovery", "call", params)
        task.pushRecovery(r)
        return FakeRecovery
    return add_recovery_func