最近碰到一个问题:
在跑laravel项目测试时,每次跑完都会把本地数据库跟测试数据库重置了。当时百思不得其解。
明明phpunit.xml也配置了测试环境的测试表,为什么会出这种错误?
一般人都会去读配置,但是往往更简单更直白的却漏了,工具可能没帮我们加载 - -
这真是尴尬又令人无法言语的BUG。阿桔的脸面都毁于此刻了。
如图所示。在phpstorm中配置我们的test frameworks。
选择我们项目中的phpunit.xml,这是我们testing用到的配置。
可能你会想了解why do this?
阿桔作为开发狗角度简单聊一下。
一般来说,我们在公司进行项目开发时,开发人员会先编写测试用例,进行简单架构测试后再写业务代码。而进行测试时,为了防止影响数据库,会创建一个临时的测试库用于测试环境。这个在phpunit.xml里配置。
这样的话,当我们在test里进行测试时,所有对数据库的操作都会跑进我们配置的测试表里。不会影响到实际的数据库。
但是每次进行数据库测试时,少则一条记录,多则上千条记录,这对数据库来说并不友好,因为很可能数据之间会彼此影响。因此我在测试类中引用了 use RefreshDatabase;
表示每次测试完重置数据库。
它将会将表内清空。
这样的话,每次测试都是独立进行的,你将不用担心前一次的测试数据对后一次的测试有何影响。
大概就是这样拉。
laravel的测试功能强大,但是如果没有实战的话,你根本不会用。
如果感兴趣后续我再出个详细笔记聊聊关于laravel测试的那些事。么么白