首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

掌握 Laravel 测试方法

我们简单介绍 PHPUnit 「单元测试」和「功能测试」基本使用方法。继而,讲解如何在 Laravel 项目中创建「单元测试」和「功能测试」用例。...搭建测试环境 创建测试模型 在开始创建测试用例前,我们需要先构建起用于测试项目依赖。 先执行下面的 artisan 命令创建一个 Post 模型及其对应迁移文件。...Post 数据表会存储一篇文章标题。修改后 Post 数据库迁移文件代码如下: <?...\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation...在 Laravel 项目中运行 PHPUnit 测试用例,仅需在项目更目录执行下面的命令。 $ phpunit 这个命令运行项目所有测试用例。

5.7K10

【Laravel框架】对于Laravel框架架构研究以及视图方法和内置会话在项目运用

架构 首先,应该了解larravel框架架构模式(设计核心,larravel架构是使用服务组件化开发模式开发,larravelframework由不同服务组件组成) larravel多个服务提供商构成了...类->服务->组件 Larravel使用基于组件开发模式,具有多个类->服务->组件,多个类构成服务,多个服务构成组件。 多个组件提供不同服务,然后多个服务构成我们项目。...由于它是中间件,它将在服务容器注册所有服务后执行,而控制器构造函数在容器注册服务时执行,因此此时会话尚未启动。如何获取数据?...,这对许多应用程序来说都没有问题。...Larave可以处理多种类型驱动程序: 文件–会话数据存储在存储/框架/会话目录中; Cookie–会话数据存储在已安全加密Cookie中; 数据库–会话数据存储在数据库中 Memcached

3.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel 5.5 LTS 正式发布!

实现接口类可以从控制器方法返回。在准备响应到 Illuminate\Routing\Router 时,路由器检查 Responsable 实例。...=Example ExampleFactory migrate:fresh 迁移命令 5.5 中新 migrate:fresh 迁移命令能让你在开发中轻松地创建一个干净数据库。...这条命令可以自动为你删除所有数据库表并且运行迁移。 这听起来很像 migrate:refresh 命令,它会回滚并重新迁移。但通常在开发过程中,你更倾向于一口气删除所有表再来运行迁移。...而 migrate:fresh 做正是这件事情。 RefreshDatabase Trait RefreshDatabase trait 是在测试期间迁移数据库新方式。...根据你是否使用内存数据库或传统数据库,这会是迁移测试数据库最佳方法。

2.5K30

Laravel 底层原理:门面(Facades)

例如,下面这个 Facade 调用和辅助函数作用是一样: return View::make('profile'); return view('profile'); 这里 Facades 和辅助函数之间没有实际区别...当用户调用 Cache Facade 中任何静态方法时, Laravel 从 服务容器 中解析 cache 绑定,然后在解析出对象上调用所有的请求方法(本例中是 get)。...实时门面 使用实时门面,可以将应用中任意类当做门面来使用。 为了说明如何使用这个功能,我们先看一个替代方案。...\Foundation\Testing\RefreshDatabase; class PodcastTest extends TestCase { use RefreshDatabase; /**...Facade 类 服务容器绑定 App Illuminate\Foundation\Application app Artisan Illuminate\Contracts\Console\Kernel

1.1K20

Laravel 底层原理:门面(Facades)

例如,下面这个 Facade 调用和辅助函数作用是一样: return View::make('profile'); return view('profile'); 这里 Facades 和辅助函数之间没有实际区别...当用户调用 Cache Facade 中任何静态方法时, Laravel 从 服务容器 中解析 cache 绑定,然后在解析出对象上调用所有的请求方法(本例中是 get)。...实时门面 使用实时门面,可以将应用中任意类当做门面来使用。 为了说明如何使用这个功能,我们先看一个替代方案。...\Foundation\Testing\RefreshDatabase; class PodcastTest extends TestCase { use RefreshDatabase; /**...Facade 类 服务容器绑定 App Illuminate\Foundation\Application app Artisan Illuminate\Contracts\Console\Kernel

1.3K10

写Laravel测试代码(1)

这样很大提高数据库测试性能,因为可以在每一个test case里只需要指定本次测试所污染数据表。...在tests/TestCase.php中可以在setUp()设置数据库重装操作: abstract class TestCase extends \Illuminate\Foundation\Testing...,不推荐使用Laravel给出\Illuminate\Foundation\Testing\DatabaseMigrations 和 \Illuminate\Foundation\Testing\DatabaseTransactions...laraveldb:seed命令没有--tables这个options,所以需要扩展\Illuminate\Database\Console\Seeds\SeedCommand: class SeedCommand...以后写数据库测试性能提高很多,大量test case可以在短时间内运行完毕。 最后,写测试代码是必须,好处非常多,随着项目程序越来越大,就会深深感觉到写测试是必须,一劳永逸,值得花时间投资。

67931

3分钟短文:为了你少跳坑,Laravel写好了用户授权

users数据表 用户数据和信息必然在数据库内,所以laravel自带了User模型,在 app/User.php 文件内, 内部代码声明了必要部分: namespace App; use Illuminate...\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; ​ class User extends...,这个模型文件与我们之前介绍 Model 模型差别非常大,因为其直接继承了 Illuminate\Foundation\Auth\User 类, 我们接着追溯该类内容: class User extends...有了模型还没有数据库表,这个模型除了能处理逻辑,一点数据都拿不到。所以第一步我们要把数据库迁移完成。...来看一下默认users表迁移文件 2014_10_12_000000_create_users_table.php 内容,还是我们之前无数次强调过,先实现 up 方法用于迁移表格: public

89000

3分钟短文:为了你少跳坑,Laravel写好了用户授权

users数据表 用户数据和信息必然在数据库内,所以laravel自带了User模型,在 app/User.php 文件内, 内部代码声明了必要部分: namespace App; use Illuminate...\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends...,这个模型文件与我们之前介绍 Model 模型差别非常大,因为其直接继承了 Illuminate\Foundation\Auth\User 类, 我们接着追溯该类内容: class User extends...有了模型还没有数据库表,这个模型除了能处理逻辑,一点数据都拿不到。所以第一步我们要把数据库迁移完成。...来看一下默认users表迁移文件 2014_10_12_000000_create_users_table.php 内容,还是我们之前无数次强调过,先实现 up 方法用于迁移表格: public

55820

Laravel 6.14.0 版本发布,支持在响应发送后执行任务

、连接关闭前执行某个任务,其实现原理有点类似终止中间件,会在应用程序处理请求完成之前注册一个可运行终止回调到应用。...有人可能会说同样事情可以通过队列任务来完成,确实如此,不过对于一些简单、非耗时、需要立即执行任务,通过这种方式处理更简单一些。...事件 当没有任何数据库迁移执行时,现在可以触发一个 NoMigrations 事件,虽然通常我们可能并不会用到这个特性: // 在迁移 up 方法中如何没有任何迁移任务,可以这样触发 NoMigrations...新增特性 新增 Illuminate\Bus\Dispatcher::dispatchAfterResponse() 方法 新增 Illuminate\Support\Testing\Fakes\QueueFake...在 Illuminate\Bus\Queueable::middleware() 中没有合并方法和属性中中间件 从 Illuminate\Console\Command 中分离 specifyParameter

1.9K20

Laravel源码解析之Console内核

上一篇文章我们介绍了LaravelHTTP内核,详细概述了网络请求从进入应用到应用处理完请求返回HTTP响应整个生命周期中HTTP内核是如何调动Laravel各个核心组件来完成任务。...引导应用 在Console内核 handle方法里我们可以看到和HTTP内核处理请求前使用 bootstrapper程序引用应用一样在开始处理命令任务之前也会有引导应用这一步操作 其父类 「Illuminate...通过命令名称查找命令类命名空间和类名。 执行命令类 run方法来完成任务处理并返回状态码。 和命令行脚本规范一样,如果执行命令任务程序成功返回0, 抛出异常退出则返回1。...还有就是打开命令类后我们可以看到并没有run方法,我们把处理逻辑都写在了 handle方法中,仔细查看代码会发现 run方法定义在父类中,在 run方法会中会调用子类中定义 handle方法来完成任务处理...结束应用 执行完命令程序返回状态码后, 在 artisan中会直接通过 exit($status)函数输出状态码并结束PHP进程,接下来shell进程根据返回状态码是否为0来判断脚本命令是否执行成功

1.7K20

深度挖掘 Laravel 生命周期

Laravel 框架或者说任何一个 Web 项目,我们都需要理解它究竟是如何接收到用户发起 HTTP 请求;又是如何响应结果给用户;在处理请求和响应过程中都存在哪些处理值得深入学习。...但是没有如何调用这些「引导程序」。 /** * Send the given request through the middleware / router....最终还是要看 Illuminate\Foundation\Application bootstrapWith() 方法究竟如何来启动这些引导程序。...有关 「管道」相关知识不在本文讲解范围内。 那么,究竟一个请求是如何处理呢?...三 总结 在 「创建 Laravel 应用实例」时不仅注册项目基础服务、注册项目服务提供者别名、注册目录路径等在内一系列注册工作;还会绑定 HTTP 内核及 Console 内核到 APP 容器,

7.4K20

完善你Laravel异常处理

这篇文章我们来简单梳理一下Laravel中提供异常处理能力,然后讲一些在开发中使用异常处理实践,如何使用自定义异常、如何扩展Laravel异常处理能力。...注册异常Handler 这里又要回到我们说过很多次Kernel处理请求前bootstrap阶段,在bootstrap阶段 Illuminate\Foundation\Bootstrap\HandleExceptions...这样项目中所有的代码没有被正确执行时都能抛出异常实例了。...Illuminate\Database\Eloquent\ModelNotFoundException 通过模型 findOrFail和 firstOrFail方法获取单条记录时如果没有找到会抛出这个异常...Laravel处理HTTP请求不成功时抛出此异常 扩展Laravel异常处理器 上面说了Laravel把 \App\Exceptions\Handler 注册成功了全局异常处理器,代码中没有

2.7K20

为什么 Laravel 这么优秀?

所有和 Laravel 交互包括操作队列,数据库迁移,生成模版文件等;你都可以通过这个脚本来完成,这也是官方推荐最佳实践之一。...因为我们已经完成了数据表中字段定义、表与表关系、以及最重要一步:如何将数据及数据之间关系写入数据库中,下面简单来介绍下在 Laravel 是如何完成。...Laravel 自动帮我们处理复杂 Join 操作,还能在一定条件下帮我们处理如 N+1 问题。...::class); Laravel 自动帮我们注册 5 条路由如下所示,包括用于新增操作 POST 请求,用于删除 DELETE 请求等: file Laravel 路由虽然是非常优秀设计,...项目 Laravel Rails Django ORM 有 有 有 数据库迁移 有 有 有 发送邮件 Mailables 邮件 ActionMailer 梅勒 SendMail 接收邮件 无 Action

16010

Laravel API教程:如何构建和测试RESTful API

您可以将资源表示在多个数据模型中(或根本不在数据库中表示),并且模型完全不受用户限制。最后,您将以适合您应用程序方式来决定如何构建资源和模型。...要记住另一件事是,您不必为每个资源实施每个操作。 创建你项目 与所有现代PHP框架一样,我们需要Composer来安装和处理我们依赖关系。...迁移和模型(Migrations and Models) 在实际编写第一次迁移之前,请确保为此应用程序创建了一个数据库,并将其凭据添加到.env位于项目根目录中文件中。...这样做,让我们继续迁移(migrate): $ php artisan migrate 您还可以使用 此处--step 选项,并将每个迁移(migration )分成自己处理,以便您可以在需要时单独回滚...这是修改后class: use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\

20.3K20

【Laravel系列7.2】错误与异常处理

,你会发现它只是调用了错误控制类 report() 方法,在这里是使用容器获得错误处理对象,实际上对象是 vendor/laravel/framework/src/Illuminate/Foundation...现在主要疑问是在于 Laravel 框架中是如何去捕获这些全局异常和错误信息,是使用我们熟悉 set_error_handler()、set_exception_handler() 这些函数?...带着这个问题,我们就来剖析一下 Laravel 源码是如何处理这些情况。.../src/Illuminate/Foundation/Http/Kernel.php 启动加载数组里面就有一个 vendor/laravel/framework/src/Illuminate/Foundation...$app->environment('testing')) { ini_set('display_errors', 'Off'); } } 熟悉配方,熟悉味道,还需要我再多说什么

2.7K20
领券