|
|
1
1
“Mocking”是一个常用于各种语言的词 test doubles |
|
|
2
0
当模拟它时,您可能会意识到一些应该重构的领域。这也是一个好计划。 |
|
|
3
0
幸运的是,有两个很好的解决方案: 1) 继续向Person类添加setter,但要使其受到保护。这意味着您的模拟和测试代码必须在同一个包中,但会阻止其他用户对您的人员进行变异。(我们不想让变种人到处乱跑——最近电影里已经有足够的变种人了)。 2) 使用构建器类(正如Joshua Bloch在Java中所描述的那样)。您将在Person内部创建一个公共静态PersonBuilder类,该类将导出一个构建方法和可链接的参数说明符(如setter,但不能单独调用): public class Person ....
public static class PersonBuilder {
public PersonBuilder (String firstName, String lastName) {...} // my sample has two required values
public Person build() { ... }
public PersonBuilder ssn (String value) { ... }
public PersonBuilder adsPath (String value) { ... }
...
}
...
}
public PersonBuilder ssn (String value) {
this.sn = value;
return this;
}
然后调用创建一个人,如下所示: Person thisPerson = new Person.PersonBuilder ("John", "Smith").ssn("123-45-6789").adsPath("whatever");
顺便说一句,您可能还希望将Person的构造函数设置为私有。 |