写测试前需要准备的东西
- 默认数据需要准备
一些数据是需要提前准备的,例如角色数据、分类数据。
1.1 表结构
在使用Laravel的时候,需要注意要先创建表结构。
如果是用原生的Laravel搭建的系统还好,每个表结构都应该有对应的migration。
但是在诸如Voyager等CMS的时候,可能并不会创建migration文件。
此时需要使用例如laravel-migrations-generator的反向migrator生成器。他可以根据表结构生成migration文件。
用此类工具的时候需要注意:由于是以当前时间点表结构创建的migration,如果自己还有写一些migration,那么要注意冲突或者字段不存在的情况。
例如:我写了migration在user表的avatar字段后面添加status字段,但是用该扩展生成的migration文件里已经包含了status字段。如果再跑这个migration,就会报该字段已存在的错误。
1.2 初始数据
用seeder可以插入默认数据。我使用了orangehill/iseed这个扩展来生成初始数据。
这里要注意一点,由于它是根据表名的顺序来生成seeder的,如果使用了外键约束,那么在往前面的表插入数据的时候会报关联错误Integrity constraint violation。
- 分清楚要测试的模块、分清楚测试的先后顺序。
订单都没有,也不可能测支付。 - 写清楚每个测试的步骤
例如,先创建才能编辑/删除。