【发布时间】:2018-09-14 04:03:49
【问题描述】:
我的团队正在为服务器代码使用 laravel 构建一个项目。早期我们打算使用模型来管理项目中使用的一些图像,但我们还没有来自客户端的图像。因此,我们构建了模型并使用 laravel 工厂和 faker 来创建用于测试的假图像。
一个月后(以及许多测试用例之后),我们收到了来自客户端的实际图像。我将图像添加到项目中,创建结构数据库播种器以填充数据库所需的数据,并为模型编写单元测试以确认其工作。
问题是现在一些测试失败了,因为我们用于图像模型的工厂仍然使用工厂和伪造者。我们需要使用我们从 faker 提供的虚假数据中获得的模型来查找特定文件的任何地方都失败了。
我想“好吧,我可以将工厂中的假数据换成来自实际模型的随机数据”。我现在遇到的问题是,当我尝试在工厂函数中使用实际模型时,模型类只能作为工厂提供:
我知道在幕后发生这种情况是有充分理由的,我只是想知道是否有办法绕过它。如果可以在工厂中使用实际模型,那我就不必重写 lot 的测试用例来将工厂替换为实际模型。这似乎也是一种非常方便的方法,可以对您知道将存在但还没有实际资产的项目进行功能测试。
有没有办法解决这个问题,或者我应该计划放弃并重构我的测试?
【问题讨论】: