Dusk или любое другое решение для тестирования Browser / Selenium не реализует такую функцию, и, похоже, они никогда этого не сделают.
См. https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/2047
Опция 1
Перейдите к URL-адресу реферера, затем введите сценарий, который заставляет страницу перейти к тому, который вы хотите проверить.
Опция 2
Используйте прокси-сервер, который перехватывает запросы иустанавливает для реферера тот, который вам нужен
https://github.com/j-bennet/selenium-referer
Опция 3
Если вы пытаетесь проверить поведение кода на стороне сервера, вы всегда можетепротестируйте его без полной эмуляции клиентской части с помощью браузера.
Например:
<?php
namespace App\Http\Controllers;
use \Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class HomeController extends Controller
{
public function home(Request $request)
{
$referer = $request->header('Referer');
if ($referer) {
return redirect()->route('home', ['came_via' => $referer]);
}
return view('welcome');
}
}
и TestCase
<?php
namespace Tests\Feature;
use Tests\TestCase;
class RedirectTest extends TestCase
{
/**
* A basic redirect example.
*
* @return void
*/
public function testRedirection()
{
// Normal request
$response = $this->get('/');
$response->assertStatus(200);
// Referer check redirection
$referer = 'http://google.com';
$response = $this->call('GET', '/', [], [], [], ['HTTP_REFERER' => $referer]);
$response->assertRedirect('/?came_via=' . urlencode($referer));
}
}
Результат
OK (2 tests, 4 assertions)