基于 Laravel 5.7 开发博客应用系列(一) —— 创建项目和测试驱动开发

注:本项目基于 Laravel 5.7 开发,本地环境是 Mac + Laradock。在开始此项目之前,假设你已经熟悉从入门到精通系列中的所有 Laravel 环境配置和功能特性,如果有任何不清楚的地方,也可以随时翻阅该系列教程以及 Laravel 文档了解细节。

1、创建博客项目

首先,在本地通过 Composer 安装一个全新的 Laravel 项目 blog57

composer create-project laravel/laravel blog57 --prefer-dist

你也可以安装器安装:laravel new blog57,使用 Composer 的好处是可以在不同版本之间切换,比如,如果你使用的是 Laravel 5.5 版本,可以这样指定安装 5.5 版本的新应用:composer create-project laravel/laravel blog55 --prefer-dist 5.5.*

在数据库中新增一个名为 blog57 的数据库,然后修改 blog57 应用根目录下的 .env 文件的数据库配置信息。

然后在应用根目录下运行如下命令初始化前端资源:

npm install

然后再将该应用的本地虚拟域名配置为 blog57.test,即可在浏览器中通过 http://blog57.test 访问应用了:

2、运行测试

Laravel 集成的单元测试和功能测试(基于 PHPUnit)功能是开箱即用的,甚至还提供了简单的单元测试和功能测试示例。

要运行 PHPUnit,在项目根目录下简单运行 vendor/bin/phpunit 命令即可:

如果你想通过 Composer 运行 PHPUnit 的话,可以在 composer.json 文件中做如下配置:

"scripts": {
    "test" : [
        "vendor/bin/phpunit"
    ],
    ... 
},  

这样就可以通过 composer test 运行测试了。

Laravel 中的 PHPUnit 配置

在新创建的 Laravel 项目根目录下有一个 phpunit.xml 文件,该文件包含了 PHPUnit 的配置信息。

查看 phpunit.xml 文件会看到测试文件位于 tests 目录下,该目录下默认已经有两个示例测试文件了:

  • Unit/ExampleTest.php —— 包含一个 testBasicExample() 测试,Unit 目录下包含的是单元测试类。
  • Feature/ExampleTest.php —— 也包含一个 testBasicExample() 测试,用于测试访问应用首页返回状态码是否是 200,Feature 目录下包含的是功能测试类。

单元测试和功能测试类都继承自 Tests\TestCase 基类,TestCase 类提供了很多针对 Laravel 应用的方法和属性用于单元测试和功能测试。

下面我们来看看 Feature/ExampleTest.php 中的 testBasicExample() 方法:

public function testBasicTest()
{
    $response = $this->get('/');
    $response->assertStatus(200);
}

该测试会访问应用首页并断言响应状态码是否是 200,还有比这更简单的测试实现吗?!我们通过配置虚拟域名访问页面可以直观看到页面效果,通过编写单元测试和功能测试可以实现测试驱动开发,更高效地完成应用测试和迭代式开发。

学院君 has written 1266 articles

Laravel学院院长,终身学习者

积分:175462 等级:P12 职业:手艺人 城市:杭州

22 条回复

  1. Glenn Glenn says:
    @ 学院君

    我在这一步没有运行npm install,目前到 “在后台实现文章标签增删改查” 这一步好像没有遇到什么问题。

  2. 学院君 学院君 says:
    @ Glenn

    npm install 安装的是 package.json 里面声明的依赖 composer install 安装的是 composer.json 里面声明的依赖 一个是前端,一个是PHP,不搭噶的

  3. Glenn Glenn says:
    @ 学院君

    谢谢学院君的回复!

    composer.json 中的依赖需要手动声明吗?我运行npm install 时显示composer.json文件不存在。我用npm init初始化生成一个composer.json后,应该还得往里面添加依赖的库吧?

  4. Glenn Glenn says:

    请问: npm install 这一步安装的是什么啊?package.json里面需要写什么?

  5. Alex Alex says:

    npm install 为什么一大堆错误?

    4669 silly registry.get 'set-cookie': [ '__cfduid=df6293ac4c748263763e4860d24fa6c091553840618; expires=Sat, 28-Mar-20 06:23:38 GMT; path=/; domain=.registry.npmjs.org; HttpOnly' ], 4669 silly registry.get 'cf-ray': '4befc19a4d218406-KBP', 4669 silly registry.get 'expect-ct': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 4669 silly registry.get server: 'cloudflare' } ] 4670 silly lockFile 7f9eba66-webassemblyjs-ast-1-8-5 webassemblyjs/ast@1.8.5 4671 silly lockFile 7f9eba66-webassemblyjs-ast-1-8-5 webassemblyjs/ast@1.8.5 4672 verbose about to build /home/darrykinger/blog57/node_modules/webpack 4673 info /home/darrykinger/blog57/node_modules/webpack unbuild 4674 info preuninstall webpack@4.29.6 4675 info uninstall webpack@4.29.6 4676 verbose true,/home/darrykinger/blog57/node_modules,/home/darrykinger/blog57/node_modules unbuild webpack@4.29.6 4677 verbose /home/darrykinger/blog57/node_modules/.bin,[object Object] binRoot 4678 info postuninstall webpack@4.29.6 4679 info /home/darrykinger/blog57/node_modules/sass-loader unbuild 4680 info preuninstall sass-loader@7.1.0 4681 info uninstall sass-loader@7.1.0 4682 verbose true,/home/darrykinger/blog57/node_modules,/home/darrykinger/blog57/node_modules unbuild sass-loader@7.1.0 4683 info postuninstall sass-loader@7.1.0 4684 error Error: No dist in undefined package 4684 error at next (/usr/share/npm/lib/cache.js:746:26) 4684 error at /usr/share/npm/lib/cache.js:739:5 4684 error at saved (/usr/share/npm/node_modules/npm-registry-client/lib/get.js:142:7) 4684 error at /usr/lib/nodejs/graceful-fs/polyfills.js:133:7 4684 error at Object.oncomplete (fs.js:107:15) 4685 error If you need help, you may report this log at: 4685 error http://github.com/isaacs/npm/issues 4685 error or email it to: 4685 error npm-@googlegroups.com 4686 error System Linux 4.4.0-137-generic 4687 error command "/usr/bin/nodejs" "/usr/bin/npm" "install" 4688 error cwd /home/darrykinger/blog57 4689 error node -v v0.10.25 4690 error npm -v 1.3.10 4691 verbose exit [ 1, true ]

登录后才能进行评论,立即登录?