【发布时间】:2020-02-29 20:01:27
【问题描述】:
最后,我阅读了很多关于遗留代码以及如何处理它的内容。 我有一个示例项目,其中包含编写得很糟糕的代码,我想对其进行重构。
注意:没有适当的测试,所以我想先添加一些测试,以确保我不会因为重构而破坏任何东西,但我不知道如何测试它。
给定以下 ULM 图:
我想为 Manager 类中的方法编写一个 UT(注意:这些不显示在 ULM 中)。 问题是 Manager 类需要一个继承了几个层次的 User 对象。
为简单起见,我并没有完全绘制完整的图形,但我们假设“用户”对象的构造函数需要多个参数,并且所有这些参数都表示具有这样一个继承链的对象。 我不允许使用 null,因为这些对象在继承级别的某个地方使用,并且当我使用“null”时会引发“Null Exception”。
我想练习 TDD 以向 Manager 类添加更改,但因此,我首先需要能够构造一个“Manager”类。 重构所有其余部分以仅制作 Manager 是不可接受的。
我知道一种技术,就是将“用户”参数更改为接口,但将接口用于“用户”感觉不对。
有什么建议吗?
【问题讨论】:
-
从代码中,我假设您需要有非空的
User对象,这是您要添加的第一个测试。其余的将按照逻辑流程进行。对于代码的每一部分,您都需要创建一个测试。从if语句开始,然后执行实际逻辑(过程输入/输出)以确保结果保持不变。 -
我不清楚,问题出在哪里?
-
问题是我无法使用“Null”对象创建“UserService”,也无法使用“Null”参数创建“用户”。想象这条链要长得多,我是否需要构建整个依赖对象树才能使这个可测试..
-
如果你想测试
UserService的行为而不用担心User,你可以用Moq 之类的东西来模拟它 -
类图可能有助于描述这个问题。
标签: c# refactoring