在Laravel中进行数据库集成测试时,如何断言两个相同的Eloquent模型实例是相同的?
AssertEquals $model $model
简单使用 ->assertEquals($modelOne, $modelTwo);
是不行的,因为即使它们是相同的,PHPUnit也会检查类属性,例如wasRecentlyCreated
,有时模型的id
可以是字符串或整数。
AssertEquals $model->id $model->id
这里的问题是,模型一可能是另一个模型的实例,例如:
AssertEquals(Person::find(1)->id, Animal::find(1)->id);
返回true。
AssertEquals $model->toArray() $model->toArray()
这里的问题是属性并不总是以相同类型转换,我不是100%确定原因,但有时模型的属性将是int
,而其他时候则是数值string
。
AssertEquals($address->toArray(), $user->address->toArray())
[ postcode => 2454 ]
[ postcode => "2454" ]
如何以简单、干净且可重复的方式断言两个 Eloquent 模型是同一个数据库记录?
Model::create()
这样的东西是否正确地持久化,还是其他什么呢? - Aken Roberts