如何测试一个方法,该方法只传递其子对象,并期望父对象继承其子对象的更新值



嗨,我想创建一个测试的方法看起来像这样(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());
}

相关内容

  • 没有找到相关文章

最新更新