所以我有一个模拟购物车服务的学术问题。
Cart 支持添加 OrderItem 和计算特定购物车总价的另一个职责。这是通过组合和委托给 IPricingCalculator 来完成的
public class Cart
{
private List<OrderItem> _items;
private IPricingCalculator _pricingCalculator;
public Cart(IPricingCalculator pricingCalculator);
public addItem(OrderItem);
public double totalPrice()
{
double price = 0.0;
for (OrderItem orderItem: _items)
price += _pricingCalculator.getPrice(orderItem);
}
}
IPricingCalculator 支持 getPrice 方法
public interface IPricingCalculator
{
double getPrice(OrderItem item);
}
CustomPriceCalculator 实现 IPricingCalculator 接口
public class CustomCalculator implements IPricingCalculator
{
private List<IPriceRule> _priceRules;
public double getPrice(OrderItem item); // return the price according to the first rule that matches
}
现在我已经以 TDD 方式实现了 CustomCalculator,这些是我的一些测试:
@Test
public void FreeItemCostNothing();
public void SpecialItemCostHalf();
public void BulkPurchaseCostsQuater();
等等。
而且我很确定 CustomCalculator 工作正常。
但我不明白根据 TDD 应该是我实现购物车的下一步,所有购物车应该做的是管理 OrderItem 的集合并折叠集合上的 getPrice 方法。我应该为这两个课程提供相同的详尽测试套件吗?
即购物车的测试是否也应包括以下此类测试-
@Test
public void TenFreeItemCostNothing();
public void FiveSpecialItemsAndBulkPurchaseCostsHalfAndQuarter();
等等等等
谢谢 :)