在单元测试中,不要模拟不属于你的类型(Don’t mock types you don’t own)是一个重要的原则。这是因为外部库或框架的类型(如第三方依赖)可能会在未来的版本中发生变化,而你的模拟可能无法反映这些变化,从而导致测试失效。
以下是一个基于Java Mockito 的示例,展示如何避免模拟不属于你的类型,以及如何使用抽象或接口来隔离外部依赖。
示例场景
假设我们有一个服务类 NotificationService,它依赖于一个外部库 ExternalEmailClient 来发送电子邮件。ExternalEmailClient 是一个第三方类,我们无法直接控制或修改它。
源代码
// 第三方库类(不属于我们的代码)<