验收测试方法访问 undefined

acceptance test method visit undefined

我创建了一个带有身份验证的新 laravel 5.4 项目。

然后我为登录过程创建了一个功能测试,如下所示

public function test_login()
  {
    $user = factory(\App\User::class)->make();
    $user->save();
    $this->visit('/login')
    ->type($user->email,'email')
    ->type($user->password,'password')
     ->press('login');;
     $this->seePageIs('/dashboard');
    }

但是当我 运行 测试时我得到了

错误:调用未定义的方法 Tests\Feature\UserTest::visit()

不确定我是否需要安装另一个组件。这就是我的 composer.json 的样子

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.6.4",
        "laravel/dusk": "^1.0",
        "laravel/framework": "5.4.*",
        "laravel/tinker": "~1.0"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~5.7"

    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\": "app/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\": "tests/"
        }
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\Foundation\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\Foundation\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true
    }
}

Laravel 5.4中默认没有内置visit方法您需要运行get才能运行操作,但请意识到它的工作方式不同(可能没有遵循重定向)。

如果您想使用旧的行为,您现在可以使用 Laravel 浏览器工具包;

composer require laravel/browser-kit-testing

您可以在迁移指南中阅读更多相关信息:https://laravel.com/docs/5.4/upgrade#upgrade-5.4.0

作为另一种选择,您可以使用 Laravel Dusk 到 运行 完整的浏览器测试

选项 1

默认情况下,visitsee 方法不再适用于 Laravel 5.4。您需要安装 Laravel Dusk 包。

composer require --dev laravel/dusk

php artisan dusk:install

所以可以分别使用visitassertSee方法

For more info refer to laravel documentation Laravel Dusk Documentation

选项 2

有时您已经编写了测试用例并且您不想搞砸它然后只需安装这个包。它需要最少的配置。

composer require laravel/browser-kit-testing --dev

For more info refer Laravel Browserkit Testing