Fix ToolNode Mock compatibility: Use real functions

- Create actual functions instead of pure Mock objects
- Functions have proper __name__ and __qualname__ attributes
- Wrapped in Mock for test assertions
- Fixes TypeError: Mock is not a module/class/method/function
This commit is contained in:
佐藤優一 2025-08-11 11:01:59 +09:00
parent 085da18205
commit 67d3974ace
1 changed files with 14 additions and 5 deletions

View File

@ -32,13 +32,22 @@ def create_mock_toolkit_with_tools():
# Create mock for each method with proper __name__ attribute
for method_name in tool_methods:
# Create a function with the right name
def mock_func():
return f"Mock {method_name} data"
# Create a real function to satisfy @tool decorator requirements
def make_mock_func(name):
def mock_func(*args, **kwargs):
return f"Mock {name} data"
# Create Mock wrapping the function
mock_method = Mock(side_effect=mock_func)
mock_func.__name__ = name
mock_func.__qualname__ = name
return mock_func
# Create the actual function (not a Mock)
actual_func = make_mock_func(method_name)
# Wrap it in Mock for test assertions but keep function properties
mock_method = Mock(wraps=actual_func)
mock_method.__name__ = method_name
mock_method.__qualname__ = method_name
mock_method.name = method_name
# Set it on the toolkit