1

我试图在我的所有代码库中遵循 TDD 原则。前端(MVC)和后端部分是分开的,前端使用自己的模型对象,而后端使用数据库对象,然后将其保存到文档数据库(RavenDb)。

这需要从 sayCustomerModelCustomerData. 这些是彼此独立创建的,因此结构可能不匹配。例如,CustomerModel可能是扁平的,而CustomerData有一个嵌套对象ContactDetails

目前,我们正在实现两种方法,一种是 sayConvertCustomerModelToCustomerDataConvertCustomerDataToCustomerModel. 它们非常相似,但彼此相反。除此之外,这些方法也经过单元测试。因此,在四个实例中创建了类似的代码 - 每次转换两次,每次单元测试两次。

这是一个非常令人头疼的维护,对我来说似乎不正确。我尝试过使用AutoMapper,但我发现它非常僵硬。另外,我找不到任何方法可以对此进行单元测试。

任何想法将不胜感激。

4

1 回答 1

0

我认为像您所做的那样拥有明确定义的边界和反腐败层(参见thisthis)是避免头痛的好方法,而在高度耦合的应用程序中寻找错误则要糟糕得多。
然后,这些层维护起来肯定很无聊,但我敢打赌,处理起来很简单,是一项不费吹灰之力的活动。
如果你发现自己经常修改你的实体(因此有很多测试要更新),可能它们还没有很好地定义,或者它们的范围太广。为什么需要更新它们?触发器是什么?
然后,AutoMapper 可以帮助你很多,我同意其他评论。
无论如何,如果没有看到代码,我很难判断并且可能会提供任何建议,所以请随意考虑这只是我的拙见:)

于 2018-04-15T12:18:51.650 回答