1 回答

TA貢獻1824條經(jīng)驗 獲得超8個贊
根據(jù)我們在評論中的對話,您在函數(shù)中遇到的問題之一,并因此導(dǎo)致測試中的問題,是一個依賴項,其中每次都無法保證結(jié)果。也就是說,對函數(shù)中另一個服務(wù)的調(diào)用不保證提供特定的輸出。add
把你的測試想象成這樣。
我從零個項目和零小計的訂單開始
我想向該訂單添加商品
我想以一個包含一個項目的訂單和一個十美元的小計結(jié)束
在此測試中,您不關(guān)心訂單項的創(chuàng)建方式,您只關(guān)心它是否具有特定值,以便將其添加到訂單中時,最終結(jié)果是您期望的。
在這種情況下,您希望成為一個模擬對象,然后您可以模擬調(diào)用以返回已知訂單對象。向您展示一個完整的解決方案有點困難,因為它可能涉及一些架構(gòu)更改,但您的測試將如下所示:$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 關(guān)注
- 97 瀏覽
添加回答
舉報