Тест phpunit в laravel не показывает настоящую сессионную таблицу - PullRequest
0 голосов
/ 11 июля 2019

Когда я использую браузер, я вижу, что значения в сеансе верны, потому что я использую их для отображения данных.

Однако, когда я отображаю таблицу сеансов в phpunit, она показывает только значение для одного ключа:

session array screenshot

Контроллер:

 public function add(Book $book)
    {
        $cart = session('cart');
        Book::addToCart($cart, $book);

        return back();
    }

Model: 
     public static function addToCart($cart, Book $book)
    {
        if (!$cart) {
            self::createCart($book);
        } else {
            self::updateCart($cart, $book);
        }
    }


    private static function createCart(Book $book)
    {
        $cart = [
            $book->id => [
                'id' => $book->id,
                'title' => $book->title,
                'quantity' => 1,
                'image' => $book->image,
                'price' => $book->price
            ]
        ];
        session(['cart' => $cart]);
    }

    private static function updateCart($cart, Book $book)
    {
        if(isset($cart[$book->id])){
            $cart[$book->id]['quantity']++;
            session(['cart' => $cart]);
        } else {
            $cart[$book->id] = [
                'id' => $book->id,
                'title' => $book->title,
                'quantity' => 1,
                'image' => $book->image,
                'price' => $book->price
            ];
            session(['cart' => $cart]);
        }
    }

например, простой тест (результат в img)

use WithoutMiddleware;

/** @test */
public function cart_is_created()
{
    $book = Book::first();

    $this->get('/add-to-cart/' . $book)
        ->assertSessionHas('cart');
    dd(session()->all());

}

1 Ответ

0 голосов
/ 11 июля 2019

Не могли бы вы показать нам свои тесты? При использовании phpunit с Laravel есть некоторые черты / классы, которые обеспечивают подключение к тестовой базе данных. Эта база данных обычно очищается перед тестированием, что может объяснить ваши выводы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...