diff --git a/tests/conftest.py b/tests/conftest.py index 6b4c35c4a37..1b8a37e48f4 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1104,23 +1104,34 @@ def mock_get_source_ip() -> Generator[None, None, None]: @pytest.fixture def mock_zeroconf() -> Generator[None, None, None]: """Mock zeroconf.""" + from zeroconf import DNSCache # pylint: disable=import-outside-toplevel + with patch( "homeassistant.components.zeroconf.HaZeroconf", autospec=True ) as mock_zc, patch( "homeassistant.components.zeroconf.HaAsyncServiceBrowser", autospec=True ): + zc = mock_zc.return_value + # DNSCache has strong Cython type checks, and MagicMock does not work + # so we must mock the class directly + zc.cache = DNSCache() yield mock_zc @pytest.fixture def mock_async_zeroconf(mock_zeroconf: None) -> Generator[None, None, None]: """Mock AsyncZeroconf.""" + from zeroconf import DNSCache # pylint: disable=import-outside-toplevel + with patch("homeassistant.components.zeroconf.HaAsyncZeroconf") as mock_aiozc: zc = mock_aiozc.return_value zc.async_unregister_service = AsyncMock() zc.async_register_service = AsyncMock() zc.async_update_service = AsyncMock() zc.zeroconf.async_wait_for_start = AsyncMock() + # DNSCache has strong Cython type checks, and MagicMock does not work + # so we must mock the class directly + zc.zeroconf.cache = DNSCache() zc.zeroconf.done = False zc.async_close = AsyncMock() zc.ha_async_close = AsyncMock()