#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