【发布时间】:2012-03-07 17:31:50
【问题描述】:
假设我有几个OrderProcessors,他们每个人处理订单的方式都略有不同。
关于使用哪个OrderProcessor 的决定是根据Order 对象的属性来完成的,并由工厂方法完成,如下所示:
public IOrderProcessor CreateOrderProcessor(IOrdersRepository repository, Order order, DiscountPercentages discountPercentages)
{
if (order.Amount > 5 && order.Unit.Price < 8)
{
return new DiscountOrderProcessor(repository, order, discountPercentages.FullDiscountPercentage);
}
if (order.Amount < 5)
{
// Offer a more modest discount
return new DiscountOrderProcessor(repository, order, discountPercentages.ModestDiscountPercentage);
}
return new OutrageousPriceOrderProcessor(repository, order);
}
现在,我的问题是我想验证返回的OrderProcessor 是否收到了正确的参数(例如,正确的折扣百分比)。
但是,这些属性在 OrderProcessor 实体上并不公开。
您建议我如何处理这种情况?
我能想出的唯一解决方案是将OrderProcessors 的折扣百分比属性公开,但仅出于单元测试的目的这样做似乎有点矫枉过正......
【问题讨论】:
标签: unit-testing nunit moq