通过反射获取模拟对象的字段值

时间:2016-09-28 09:39:18

标签: reflection mockito

class Person { 
    private String firstName;
    private String lastName;
    // getters and setters for firstName, lastName
}

@Test
void test() {
    Person p = mock(Person.class);
    when(p.getFirstName()).thenReturn("John");
    when(p.getLastName()).thenReturn("Peter");

    Map<String, Object> someContainerLikeMap = new HashMap<>();

    org.springframework.util.ReflectionUtils.doWithFields(p.getClass(), field -> {
        someContainerLikeMap.put(field.getName(), field.get(p));
        // field.get(p) above, always get null
    }
}

我有两个问题:

  1. 通过字段反射获得field.get(p),始终获得null;

  2. 迭代字段,在包含的Person类中定义字段的最佳方法是什么,即firstName,lastName?

1 个答案:

答案 0 :(得分:0)

Mockito完全通过使用“代理对象”自动子类化方法来工作;它根本不会覆盖,更改或模拟字段。你需要一个不同的工具。