Laravel7 phpunit View: не удается пройти тесты

#laravel #phpunit #laravel-7 #illuminate-container

#laravel #phpunit #laravel-7 #подсветка-контейнер

Вопрос:

Каков правильный синтаксис для «shouldReceive» с классом представления Laravel и аргументом «with»? Я все утро пытался пропустить этот простой тест:

     $request = new Request([], [], [], [], []);

    $view = Mockery::mock(View::class);

    $dealData = [
        'products' => [],
        'response' => [
            'total' => 100
        ],
        'aggs' => []
    ];

    $pageData = [
        'productData' => $dealData
    ];

    $this->productService->shouldReceive('getDealsListData');
    $view->shouldReceive('with')->with($pageData);
    $this->productController->getDealsList($request);
  

Метод, который я тестирую, вызывает ProductService, а затем возвращает представление с аргументами:

 return view('products.list')->with($pageData);
  

По-видимому, независимо от того, какую комбинацию я пробую, это результат phpunit:

 Received Mockery_4_Illuminate_View_View::with(), but no expectations were specified
  

Я явно говорю, что он должен получать «with» — что я могу сделать, чтобы разрешить phpunit проходить здесь?

Комментарии:

1. как насчет передачи в виде синтаксиса массива, return view('products.list', [ 'pageData' => $pageData ] );

2. да, это работает, но я должен иметь возможность иметь -> with в своем коде и не должен кодировать вокруг phpunit, как это

3. синтаксис with также должен иметь пару ключ-значение systax, вы можете это проверить laravel.com/docs/8.x/views#passing-data-to-views