我想大部分的人学测试不是想用在写 leetcode 吧,因此我们来模拟一下购物车。
我们来写一个有点霸道的购物车,这个购物车只有两个功能:
根据这两个需求我们设计了一个购物车商品类别,有 id、数量、名称、价钱 四个属性。
一个购物车类别可以用 Collection 储存商品,并且有加入商品跟计算数量两个方法。
class CartItem implements Arrayable, Jsonable
{
public $id;
public $qty;
public $name;
public $price;
public function __construct($id, $name, $price, $qty) { ... }
public function toArray() { ... }
}
不论你是要先写再补测试还是要测试驱动开发都可以。
这次我先写购物车逻辑:
class Cart
{
public $itemCollection;
public function __construct()
{
$this->itemCollection = new Collection();
}
public function addItem(CartItem $item)
{
$this->itemCollection->push($item->toArray());
return true;
}
public function countItems()
{
return $this->itemCollection->sum('qty');
}
}
再补测试:
public function test_cart_addItem()
{
$item = new CartItem(1, 'apple', 15, 1);
$cart = new Cart();
$isTrue = $cart->addItem($item);
self::assertTrue($isTrue);
}
public function test_cart_countItems()
{
$expected = 6;
$item1 = new CartItem(1, 'apple', 15, 3);
$item2 = new CartItem(2, 'banana', 6, 3);
$cart = new Cart();
$cart->addItem($item1);
$cart->addItem($item2);
$actual = $cart->countItems();
self::assertSame($expected , $actual);
}
耶!
参加铁人赛发现原来组员们不少对网站设计有兴趣。
推荐两个跟网站设计有关的台湾社群(也顺便跟大家要收藏):
连假第二天,在这边先祝大家连假快乐啦,那延续昨天,我们现在已经把String的List拿到了,现在...
国庆连假中,假日只想耍废玩 game,不想进修QQ,但为了避免断赛,还是加减推一些东西,等明後天再来...
Azure machine learning: workspace and compute grou...
好酒沉瓮底,精彩在最後;只是要付出一点点代价。 本文开始 前面提到过,使用OpenCV &...
1.钢笔工具去背 (影片Ps5) (1)用钢笔画出要去背的物件 a.拉,按着左键不要放>Alt...