[英]Java & Mockito - passing an argument to a method AND capturing the result
[英]Junit And Mockito, Capturing method call on passed argument
我对 Java 中的 Mockito 和 Junit 比较陌生。 如何捕获或验证传递给我正在测试的 function 的参数的交互。 Ex-- 主class
public class A{
public void setValues(Person p){
p.setFirstName('Lucky');
p.setLastName('Singh');
// Some more code
}
}
测试 class
class Test {
@InjectMocks
A classUnderTest;
@Test
public void tests(){
classUnderTest.setValues(new Person());
// What to do next to verfiy that the setFirstName and setLastName where really called on Person Object as setValues have void return type??
}
}
现在我想用 void 返回类型测试这个 setValues 方法。 我知道如果返回类型是我可以使用断言的人。 但我无法更改方法定义。 所以我想验证是否调用了 setFirstName 和 setlastName。
我正在使用pit-test,并且突变删除了对setFirstName的调用,并且setlastName没有被杀死。
我怎样才能做到这一点?
您可以为您的Person
class 注入一个间谍,然后验证方法是否调用如下:
class Test {
@Spy
Person person = new Person();
@InjectMocks
A classUnderTest;
@Test
public void tests(){
classUnderTest.setValues(person);
// You can now verify if the methods setFirstName and setLastName where really called on Person
verify(person, times(1)).setFirstName(isA(String.class));
verify(person, times(1)).setLastName(isA(String.class));
}
}
间谍将包装现有实例,在您的情况下Person
。 它仍然会以与普通实例相同的方式运行,唯一的区别是它还将被检测为跟踪与它的所有交互,以便您可以实际验证调用的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.