嗨,我想创建一个测试的方法看起来像这样(updateObject):
MyService.class:
public Parent updateObject(Parent parent) {
otherService.updateChild(parent.getChild());
return parent;
}
OtherService.class:
public Child updateChild(Child child) {
child.setName("updated name");
return child;
}
我试图模拟updateChild方法并返回一个具有更新值的对象。但是父对象没有得到更新后的子对象。
My Failed Test:
public void testUpdateObject() {
Parent parent = new Parent();
Child currentChild = new Child();
child.setName("current name");
parent.setChild(currentChild);
Child updatedChild = new Child();
updatedChild.setName("updated name");
when(otherService.updateChild(any(Child.class)).thenReturn(updatedChild);
sut.updateObject(parent);
assertEquals(updatedChild.getName(), parent.getChild().getName());
}
任何帮助将非常感激!
- 首先,创建一个父对象和一个子对象,然后设置它
- 在调用updateObject方法之前,断言子对象
- 调用updateObject方法,然后断言名称被设置为"更新的名字"。
这是updateObject
的测试方法@Test
public void testUpdateObject() {
MyService myService = new MyService();
Child child = new Child();
Parent parent = new Parent();
parent.setChild(child);
asserNull(parent.getChild().getName());
myService.updateObject(parent);
assertEquals("updated name", parent.getChild().getName());
}