1 回答
TA贡献1824条经验 获得超8个赞
根据我们在评论中的对话,您在函数中遇到的问题之一,并因此导致测试中的问题,是一个依赖项,其中每次都无法保证结果。也就是说,对函数中另一个服务的调用不保证提供特定的输出。add
把你的测试想象成这样。
我从零个项目和零小计的订单开始
我想向该订单添加商品
我想以一个包含一个项目的订单和一个十美元的小计结束
在此测试中,您不关心订单项的创建方式,您只关心它是否具有特定值,以便将其添加到订单中时,最终结果是您期望的。
在这种情况下,您希望成为一个模拟对象,然后您可以模拟调用以返回已知订单对象。向您展示一个完整的解决方案有点困难,因为它可能涉及一些架构更改,但您的测试将如下所示:$this->order_item
createOrderItem
public function it_adds_an_item_to_an_order()
{
$orderItem = Mock(OrderItem::class); // Use whatever mocking lib is available
$orderitem->shouldReceive('createOrderItem').andReturn(new OrderItem([$subtotal=>10.00]));
$orderService = new OrderService($orderItem);
$order = $orderService->add($data);
$this->assertNotNull($order);
$this->assertEquals(10.00, $order->subtotal);
}
- 1 回答
- 0 关注
- 77 浏览
添加回答
举报