Mockito ArgumentCaptor.Как получить «живое значение» объекта, передаваемого в функцию? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть код, подобный

//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 захватывает ссылку переданного объекта.Кто-нибудь знает, есть ли другой способ сделать это?Или я делаю это неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...