88.从 Laravel 5.4 升级到 Laravel 5.5

未匹配的标注

本节说明

  • 对应视频教程第 88 小节:From Laravel 5.4 to Laravel 5.5

本节内容

本节我们来将 Laravel 版本从 5.4 升级到 5.5。我们按照 5.4 到 5.5 的升级指引 修改composer.json文件如下:

{
   .
   .
    "require": {
        .
        "laravel/framework": "5.5.*",
        .
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~6.0"
    },
    .
    .
    "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"
        ],
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    },
   .
   .
}

然后进行升级:

$ composer update

通常情况下,当你升级 Laravel 版本时,你需要仔细阅读升级指引,按照指引上的说明逐项排查。但是我们则无需如此,因为我们的测试会告诉我们哪些地方需要修改,然后我们再去升级指引上查找相对应的解决办法即可。我们来运行测试:
file
按照升级说明,intersect方法被移除,需要进行修改:
forum\app\Filters\Filters.php

    .
    .
    public function getFilters()
    {
        return array_filter($this->request->only($this->filters));;
    }
}

再次运行测试:
file
根据升级说明,如果使用模拟 Mail 来验证发送邮件 ,则应该使用Mail::assertQueued来代替Mail::assertSent。我们修改该测试:
forum\tests\Feature\RegistrationTest.php

    .
    .
    /** @test */
    public function a_confirmation_email_is_sent_upon_registration()
    {
        Mail::fake();

        $this->post(route('register'),[
            'name' => 'NoNo1',
            'email' => 'NoNo1@example.com',
            'password' => '123456',
            'password_confirmation' => '123456'
        ]);
        // 注意此处
        Mail::assertQueued(PleaseConfirmYourEmail::class);
    }
    .
    .

现在我们再次运行测试:
file
升级完毕。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2
发起讨论 只看当前版本


CarlGao
mailable was not queued?
0 个点赞 | 1 个回复 | 问答
Iwtrgw
Composer update 报错
0 个点赞 | 0 个回复 | 问答