如何编写易于单元测试并同时封装数据的代码?
例如,如果我想要unittest某个类,我会声明所有字段的getter和setter。否则我不能注入嘲笑。另一方面,我想写一个真正需要公共方法的api非常好的类。
我相信你了解我。
答案 0 :(得分:1)
如果你的类有一个需要模拟的协作者,那么它将从某个地方获得它 - 通过构造函数或通过setter。因此,拥有这些不是设计问题。
但我不会为所有东西都有吸气剂,除非它们自然是API的一部分。您应该测试被测对象的观察行为 - 这意味着您可以通过其公共API自然获得。
我曾经参与过一个项目,开发人员坚持让一切都公开,以便他可以测试内部状态。那是......嗯......好玩。