88.从 Laravel 5.4 升级到 Laravel 5.5
- 本系列文章为
laracasts.com
的系列视频教程——Let's Build A Forum with Laravel and TDD 的学习笔记。若喜欢该系列视频,可去该网站订阅后下载该系列视频, 支持正版 ;- 视频源码地址:github.com/laracasts/Lets-Build-a-...;
- 本项目为一个 forum(论坛)项目,与本站的第二本实战教程 《Laravel 教程 - Web 开发实战进阶》 类似,可互相参照。
本节说明
- 对应视频教程第 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 版本时,你需要仔细阅读升级指引,按照指引上的说明逐项排查。但是我们则无需如此,因为我们的测试会告诉我们哪些地方需要修改,然后我们再去升级指引上查找相对应的解决办法即可。我们来运行测试:
按照升级说明,intersect
方法被移除,需要进行修改:
forum\app\Filters\Filters.php
.
.
public function getFilters()
{
return array_filter($this->request->only($this->filters));;
}
}
再次运行测试:
根据升级说明,如果使用模拟 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);
}
.
.
现在我们再次运行测试:
升级完毕。
推荐文章: