gpt4 book ai didi

java - 模拟 : mock method parameter

转载 作者:行者123 更新时间:2023-11-28 21:32:07 25 4
gpt4 key购买 nike

我正在使用 Mockito 框架进行测试。现在我遇到了以下问题。

这是我要测试的类。

@Service
public class Parent{

@Autowired
private Child child;

public void setChildDetails(ChildDetails childDetails){
childDetails.validate();
....
int age = childDetails.getAge();
}

}

这是我的测试。

public class ParentTest {

@InjectMocks
private Parent parent;

@Mock
private Child child;

@Before
public void setup() {
initMocks(this);
}

@Test
public testParentMethod(){
.....
}

@Test
public testChildDetailsMethod(){
ChildDetails childDetails = new ChildDetails();
childDetails.setAge(20);
parent.setChildDetails(childDetails);
}

}

Mock for Child 属性发挥作用。问题是我还想模拟 childDetails.validate()(仅此方法)并保留其他方法(getAge() 必须返回 20)。你能建议如何解决这个问题吗?

最佳答案

为此你应该使用spy。 spy 是一个部分模拟,只会模拟您告诉它的各个方法。如果 validate() 是一个 void 方法,您可以为 spy 使用 doNothing() 方法。如下使用:

   @Test
public testChildDetailsMethod(){
ChildDetailsSpy childSpy = spy(new ChildDetailsSpy());
doNothing().when(childSpy).validate();
childDetails.setAge(20);
...
}

可以找到有关此主题的更多阅读 here .

关于java - 模拟 : mock method parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16558911/

25 4 0