tag.':'.$url; } public function htmlBatch(array $urls): array { $out = []; foreach ($urls as $u) { $out[$u] = $this->tag.':'.$u; } return $out; } }; } it('htmlBatch: яндекс идёт в яндекс-фетчер, остальное — в дефолтный', function () { $r = new RoutingBatchFetcher(tagFetcher('X'), ['yandex' => tagFetcher('PW')]); $out = $r->htmlBatch([ 'https://yandex.ru/maps/org/a/1', 'https://2gis.ru/krasnoyarsk/firm/2', ]); expect($out['https://yandex.ru/maps/org/a/1'])->toBe('PW:https://yandex.ru/maps/org/a/1') ->and($out['https://2gis.ru/krasnoyarsk/firm/2'])->toBe('X:https://2gis.ru/krasnoyarsk/firm/2'); }); it('html(): одиночная загрузка тоже маршрутизируется', function () { $r = new RoutingBatchFetcher(tagFetcher('X'), ['yandex' => tagFetcher('PW')]); expect($r->html('https://yandex.ru/x'))->toBe('PW:https://yandex.ru/x') ->and($r->html('https://2gis.ru/y'))->toBe('X:https://2gis.ru/y'); }); it('без маршрутов всё идёт в дефолтный', function () { $r = new RoutingBatchFetcher(tagFetcher('X')); expect($r->htmlBatch(['https://yandex.ru/z']))->toBe(['https://yandex.ru/z' => 'X:https://yandex.ru/z']); });