1

我创建了一个带有身份验证的新 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
    }
}
4

2 回答 2

18

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运行完整的浏览器测试

于 2017-03-07T14:57:00.103 回答
8

选项1

默认情况下,visitandsee方法在 Laravel 5.4 中不再有效。你需要安装 Laravel Dusk 包。

composer require --dev laravel/dusk

php artisan dusk:install

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

更多信息请参考 laravel 文档Laravel Dusk 文档

选项 2

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

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

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

于 2017-09-10T10:46:25.743 回答