kmuenkel / concept-factory
根据Model-like配置类自动生成具有真实关系的虚拟数据
Requires
- php: ^7.1.3
- ext-json: *
- illuminate/database: ^7.0
- symfony/finder: ^3.4|^4.0|^5.0
Requires (Dev)
Suggests
- illuminate/console: Necessary to leverage the command-line tool
README
问题:根据科学方法,PhpUnit测试需要控制被测试行为提供的数据源。虽然Model Factories很方便,但不能提供记录之间的真实关系。当然,你可以通过它们在外键字段中相互引用来做到这一点。但如果你数据库没有正确归一化,这可能导致无限递归。而且,这仍然没有解决一个问题:一张表不一定代表一个想法,需要为同一个Model创建多个Model Factories,这会变得有些混乱。
例如,一个'user'表可能是一个学生,也可能是一个管理员。如果它是一个学生,这意味着用户记录必须具有特定的值,并且必须与'class'记录具有特定的关系,'class'记录必须有一个相应的'school'记录,依此类推。如果你可以运行像这样的命令 php artisan concept:generate student,并且递归地为你生成所有依赖记录,那会怎么样呢?
进一步举例,如果你有一个讲座'attendee'记录,这意味着一个与相关'school'记录的'student'。并且它与'lecture'记录之间存在多对多关系...这同样链接到一个'school'记录。那么,如果我们的虚拟数据生成器足够智能,可以复用相同的学校记录,会怎么样呢?
这就是这个包的目的。为了生成大部分随机、大部分lorem ipsum虚拟数据,具有级联真实关系,用于自动化测试或本地QA。
与Model类封装数据库表的方式类似,Concept类封装一个概念实体。它们可以同样轻量,并以类似的结构构建,从基础Model名称开始,列出需要与其一起加载的关系列表,以及覆盖Model的关系方法以使用自己的方法,该方法可以返回嵌套的Concept对象。正是用另一个Concept替换关系的能力,使这个工具在利用得越多时变得越聪明。