NikolayAlb
@NikolayAlb

Как протестировать страницу, на которой браузер получает куки?

Добрый день, есть простая логика локализации на сайте:
Контроллер с роутом, на который пользователь переходит для установки языка:
Route::get('lang/{lang}', ['uses'=>'LanguageController@setLang'])->name('lang.set');

public function setLang($lang)
    {
        if (array_key_exists($lang, config('languages'))) {
            setcookie ('applocale', $lang, 0, '/', NULL, 0 );
        }
        return redirect()->back();
    }


Также есть глобальное middleware, которое висит на любом запросе и по куки определяет язык отображения:
public function handle($request, Closure $next)
    {
        $requestedLocale = $request->cookie('applocale');
        $applocale = config('app.locale'); // default locale

        if( $requestedLocale !== null && array_key_exists($requestedLocale, config('languages'))) {
             $applocale = $requestedLocale;
        }

        app()->setLocale($applocale);
        session()->put('applocale', $applocale);
        Carbon::setLocale($applocale);

        return $next($request);
    }


Я пытаюсь написать тест для проверки установки этой самой куки:
/**
     * Language can be changed.
     *
     * @return void
     *
     * @runInSeparateProcess
     */
    public function testChangeLanguage()
    {
        print 'Locale before: ' . app()->getLocale() . "\n";
        $this->get('/lang/en')->assertStatus(302);
        print 'Locale after:  ' . app()->getLocale();
        $this->get('/')->assertCookie('applocale');
    }


Но в результате phpunit выдает ошибку:
Cookie [applocale] not present on response.
Failed asserting that null is not null.
 C:\...\vendor\laravel\framework\src\Illuminate\Foundation\Testing\TestResponse.php:154
 C:\...\tests\Feature\LanguageTest.php:24
 
Locale before: ru
Locale after:  ru


Каким образом протестировать это?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 2
DevMan
@DevMan
печенек нет в консоли, поэтому и тестировать их нет смысла.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
печеньки - только в браузере устанавливаются
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы