Laravel Ошибка click does not exist используя phpunit 7

mstdmstd

Новичок
Всем привет!
Просматривая примеры использования phpunit в laravel 5.6 вижу описание примеров с вызовом имитации нажатия на кнопку, например тут https://laravel.ru/docs/v5/testing :
PHP:
public function testBasicExample()
{
  $this->visit('/')
       ->click('О нас')
       ->seePageIs('/about-us');
}


Но при вызове метода ->click у меня ошибка

PHP:
<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\DatabaseMigrations;

class VotesAdminCrudTest extends TestCase   //   vendor/bin/phpunit tests/Feature/VotesAdminCrudTest.php
{
    use funcsTrait;
    use DatabaseMigrations;
    public function testVotesListing()
    {
        $response                     = $this->actingAs($loggedUser)->get('/admin/votes');
        $response->assertStatus(200);
        $response->assertSee( htmlspecialchars('Votes Listing',ENT_QUOTES));
        ...
Код выше работает нормально и отображает ошибку если написать другой текст для проверки



Я пытался сделать так :
PHP:
      $this->actingAs($loggedUser)->get('/admin/votes')->
            click('Add')
             ->seePageIs('/admin/vote/create')
             ->assertSee( 'Create vote');
то ошибка:
Код:
BadMethodCallException: Method Illuminate\Http\Response::click does not exist.
И непонятно почему - я что-то не подключил или не от того класса унаследовался ?
$this - это мой контрол унаследованный от TestCase ?


Не вижу почему у меня не работает?


В composer.json :
Код:
{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": "^7.1.3",
        "doctrine/dbal": "^2.8",
        "fideloper/proxy": "^4.0",
        "intervention/image": "^2.4",
        "laravel/framework": "5.6.*",
        "laravel/tinker": "^1.0",
        "laravelcollective/html": "^5.4.0",
        "proengsoft/laravel-jsvalidation": ">2.2.0",
        "wboyz/laravel-enum": "^0.2.1",
        "yajra/laravel-datatables-oracle": "^8.7"
    },
    "require-dev": {
        "barryvdh/laravel-debugbar": "^3.1",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^2.0",
        "phpunit/phpunit": "^7.0"
    },
Спасибо!
 
Очевидно же, что get('/admin/votes') возвращает объект от Illuminate\Http\Response.
$this здесь не причём
 
get_class($response) возвращает Illuminate\Foundation\Testing\TestResponse

если в заголовке подключить
PHP:
use Illuminate\Http\Response;
...
use Tests\TestCase;

То та же самая ошибка.
Видимо причина в этом, но непонятно почему и как ее исправить?
 
Не надо путать теплое с мягким, HTTP testing и Browser testing - это две большие разницы.

HTTP testing [1] - это получить ответ (условно говоря, curl-ом). Куда там кликать?

А вот Browser testing [2] - это тестирование через headless browser.

[1] https://laravel.com/docs/5.6/http-tests
[2] https://laravel.com/docs/5.6/dusk

И рекомендую читать официальную документацию по приведенным ссылкам, а не напевы Рабиновича на левых сайтах.
 
@fixxxer по ссылке тоже неплохой ресурс, ребята проделывают неплохую работу плюс помечают изменения, но от оригинальной доки отстают.
 
Да какая разница? Любой вторичный источник будет менее точен, чем первичный. А если программист не в состоянии прочитать официальную документацию на английском языке, он профессионально непригоден.
 
Сверху