假设我有以下课程:
class Person {
private String name;
private Integer id;
public Person(String name){
this.name=name;
this.id=random();
}
int random() {
return new Random().nextInt();
}
}
通过使用模拟Person
方法调用构造函数,可以为random()
类创建部分模拟吗?
我的意思是这样的:
Person a=EasyMock.createMockBuilder(Person.class)
.withConstructor(String.class)
.withArgs("Albina")
.addMockedMethod("random")
.createMock();
答案 0 :(得分:2)
我会采用不同的方式:使用依赖注入来"插入"随机对象:
public Person(Random rand, String name) { this.random = rand ...
和
public Person(String name) { this(new Random(), name) ...
然后你可以创建你班级的普通对象;这将使用模拟随机。
很多时候,我们会考虑"复杂"解决方案以某种方式测试我们的生产代码但这是错误的做法:如果你的代码难以测试;然后改变你的代码!