我有一个person
对象,它有一个来自外部服务的私有构造函数。在构造函数中,firstname
和lastname
将从数据库中删除。现在进行单元测试,我想提供firstname
和lastname
,以便不在单元测试中命中数据库。
如何扩展我的类并添加一个构造函数扩展,以便在单元测试中提供firstname
和lastname
?
答案 0 :(得分:2)
如果一个类只有有一个私有构造函数,除了作为嵌套类型之外,你根本无法从它派生。基本上听起来你想要使用的类型不适合在测试中使用:(
当你说类型"来自外部服务" - 你到底是什么意思?您的意思是源代码根本不在您的控制之下吗?或者它是部分在你的控制之下?例如,如果这是生成的代码,您可以考虑添加构建步骤来修改它......
答案 1 :(得分:1)
听起来您的类与某些外部数据源紧密耦合 - 您是否可以注入某种可在单元测试中模拟的提供程序?
修改强>
根据评论,似乎这是第三方库,在这种情况下,对您进行单元测试不是您的责任。您应该对您的代码进行单元测试,并模拟/存根使用第三方库(这也意味着您应该通过某种接口松散地使用库)。