У меня есть код, подобный
//src
public class ClassToCapture {
private int x;
// setters, getters , constructors, etc ..
}
public class ClassToTest {
private Sender sender;
// setters, getters , constructors, etc ..
public functionToTest() {
ClassToCapture classToCapture = new ClassToCapture(0);
sender.send(classToCapture);
classToCapture.setX(1);
// some other operation
}
}
Я хотел перехватить отправляемое значение с помощью sender.send () и проверить его.Итак, мой тестовый пример выглядит следующим образом.
//test
public class Test {
private Sender sender = mock(Sender.class);
private ClassToTest target = new ClassToTest(sender);
public void test() {
target.functionToTest();
ArgumentCaptor<ClassToCapture> argumentCaptor = ArgumentCaptor.forClass(ClassToCapture);
verify(sender).send(argumentCaptor.capture());
System.out.println(argumentCaptor.getValue().getX()); //printing 1, instead of 0, the "live-value" when the sender.send() was called.
}
}
Похоже, что ArgumentCaptor
захватывает ссылку переданного объекта.Кто-нибудь знает, есть ли другой способ сделать это?Или я делаю это неправильно?