验收测试方法访问undefined

时间:2017-03-07 09:55:21

标签: 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');
    }

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

错误:调用未定义的方法测试\ 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
    }
}

2 个答案:

答案 0 :(得分:15)

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 :(得分:7)

选项1

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

composer require --dev laravel/dusk

php artisan dusk:install

因此,您可以分别使用visitassertSee方法。

  

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

选项2

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

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

有关详细信息,请参阅Laravel Browserkit Testing