【发布时间】:2016-12-28 13:26:22
【问题描述】:
问题示例:
class ToBeTested {
private MyResource myResource;
public toBeTested() {
this.myResource = getResource();
}
private MyResource getResource() {
//Creating My Resource using information form a DB
return new MyResource(...);
}
}
我想模拟getResource(),这样我就可以提供MyResource 的模拟实例。我发现的所有关于如何模拟私有方法的示例都是基于首先创建 ToBeTested 实例然后替换该函数,但是由于在我的情况下它是从构造函数中调用的,所以为时已晚。
是否可以在创建所有实例之前模拟私有函数?
【问题讨论】:
-
为什么不模拟从
getResource()方法内部访问数据库的依赖项(无论它是什么)?这样,就不需要模拟private方法了。 -
MyResource()可能被其他类的代码使用,我不想改变他们的行为。 -
嗯,但是如果它被其他类使用呢?为什么要阻止测试模拟从数据库创建
MyResource的依赖项?
标签: java unit-testing mocking powermock