【发布时间】:2009-12-18 19:49:50
【问题描述】:
所以我有一个订单管理器类,如下所示:
public class OrderManager
{
private IDBFactory _dbFactory;
private Order _order;
public OrderManager(IDBFactory dbFactory)
{
_dbFactory = dbFactory;
}
public void Calculate()
{
_order.SubTotal
_order.ShippingTotal
_order.TaxTotal
_order.GrandTotal
}
}
现在,这里的重点是要有一个灵活/可测试的设计。 我非常担心能否围绕这个 Calculate 方法编写可靠的单元测试。
注意事项:
1. Shipping has to be abstracted out, be loose coupled since the implementation of shipping could vary depending on USPS, UPS, fedex etc. (they have their own API's).
2. same goes with calculating tax
我是否应该只创建一个 Tax and Shipping Manager 类,并在构造函数中有一个tax/shipping factory? (我的 OrderManager 究竟是如何设计的)类?
(就我“缺少”的东西而言,我唯一能想到的是 IoC,但我不介意这一点,并且在我看来也不需要那种额外的抽象级别)。
【问题讨论】:
-
编写良好的代码也很容易测试。将您的功能拆分为细粒度的组件,在该级别进行测试。还要对整个事情进行一致的测试。测试代码不需要看起来 100% 优雅。测试人员围绕实现工作,而不是相反。有时会有妥协,但相信我——在现实世界中赚钱的软件市场(大部分市场)中,测试是第二优先的(NASA 的做法不同)。保持简单,直到需要复杂性为止。
-
这种问题真正要靠多天的白板讨论才能回答。
-
@Jeff Sternal - 同意 - 给出一些可以在白板上得到的想法 :)
-
mrblah,一个问了数百个问题却从不回答一个的人。 -1 给你。
标签: c# asp.net-mvc oop nunit