我们有一个类,其目的是更改接收对象的某些字段中的值,并保留其其他字段的值
public void process(SomeType someObject) {
SomeType modifiedObject = modifyObject(someObject);
nextClass.process(modifiedObject);
}
private SomeType modifyObject(SomeType someObject) {
String someValueFromServiceCall = someService.getSomeValue(...);
SomeType modifiedObject = new SomeType.Builder()
.withSomeFieldValuesFromSomeObjectItself(...)
.withSomeFieldValuesFromServiceCall(someValueFromServiceCall)
.build();
return modifiedObject;
}
SomeType
是一个遗留类,我们只能使用它的生成器类创建它,它没有setter方法。这意味着我们不能修改接收到的
someObject
但必须建立并返回一个新的
基类型
对象来自
modifyObject()
,然后主方法可以将其传递给下一个类进行处理
modifiedObject
从单元测试类中,我们似乎无法对它进行期望/断言
SomeType someObject = createSomeObjectForTest();
expect(someServiceMock.getSomeValue(...)).andReturn(SOME_VALUE);
expect(nextClassMock.process(someObject)).andReturn(...); //this is not someObject, but the new internal modifiedObject created within underTest
underTest.process(someObject);
assertEquals(someObject.getSomeField(), SOME_VALUE); //this is not someObject, but the new internal modifiedObject created within underTest