验收测试方法访问undefined

JaC*_*hNo 1 laravel laravel-5 laravel-5.3 laravel-5.4 laravel-dusk

我创建了一个带有身份验证的新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');
    }
Run Code Online (Sandbox Code Playgroud)

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

错误:调用未定义的方法测试\ 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
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*łek 15

visitLaravel 5.4中默认没有内置方法.您需要运行get以便运行操作但请注意它的工作方式不同(可能没有遵循重定向).

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

composer require laravel/browser-kit-testing
Run Code Online (Sandbox Code Playgroud)

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

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


Sur*_*raj 7

选项1

默认情况下,visitsee方法在Laravel 5.4中不再有效.您需要安装Laravel Dusk包.

composer require --dev laravel/dusk

php artisan dusk:install
Run Code Online (Sandbox Code Playgroud)

所以你可以分别使用visitassertSee方法.

有关更多信息,请参阅laravel文档Laravel Dusk文档

选项2

有时您已经编写了测试用例并且您不想搞砸了,只需安装此软件包即可.它需要最少的配置.

composer require laravel/browser-kit-testing --dev
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Laravel Browserkit Testing