id = 10; $device->name = 'router'; $device->primaryIp = '192.168.1.1'; $repository = new FakeDeviceRepository(ipMatch: $device); $service = new MergeSuggestionService($repository); $host = new DiscoveredHost(); $host->ipAddress = '192.168.1.1'; $suggestions = $service->findSuggestions($host); self::assertSame($device, $suggestions[0]['device']); self::assertSame(40, $suggestions[0]['confidence']); self::assertSame('IP адрес совпадает', $suggestions[0]['reason']); } } final class FakeDeviceRepository extends DeviceRepository { public function __construct( private ?Device $macMatch = null, private ?Device $nameMatch = null, private ?Device $ipMatch = null ) { } public function findByMac(string $macAddress): ?Device { return $this->macMatch; } public function findByName(string $name): ?Device { return $this->nameMatch; } public function findByIp(string $ipAddress): ?Device { return $this->ipMatch; } }