【发布时间】:2018-08-09 05:04:32
【问题描述】:
我一直在尝试在测试中重新加载模型。
我一直在使用fresh(),由于某种原因它在测试中不起作用。 (可能这是一个错误)
这是一个sn-p。
//There is a relationship between Order and OrderItem.
//One Order hasMany OrderItem
$order = factory(Order::class)->create([...]);
$orderItem = factory(OrderItem::class)->create([
'order_id' => $order->id,
]);
$response = $this->delete('/api/order/' . $order->id);
$response->assertResponseStatus(200);
//This passes.
$orderItem = $orderItem->fresh();
$this->assertEquals($orderItem->some_attribute, 0);
最后一行的结果是trying to get property of non-object。
我变了
$orderItem = $orderItem->fresh();
进入
$orderItem->fresh();
这种方法根本没有刷新$orderItem。
你看到我做错了什么吗?
我们将不胜感激。
附言
$orderItem = OrderItem::find($orderItem->id);
我尝试了这种方法,结果也是trying to get property of non-object。
【问题讨论】:
-
代码看起来也不错。我也觉得是个bug。请问你用的是什么版本?
-
关于你的最后一点:你得到一个非对象的属性,因为模型不存在,因为删除调用有效。您应该将最终的 find() 更改为 findOrFail(),然后断言 ModelNotFoundException。去掉最后的->id。
-
@Kenth 我使用的是 5.1。也许你会建议使用最新版本,但现在我正在做的是维护一个用 5.1 开发的旧应用程序。