是否有一种方法可以使用ReflectionTestUtils来设置一个字段内的方法的返回值,该字段代表一个类的模拟值,而不是模拟整个字段?我正在尝试。setfield(),但这似乎只适用于整个领域。如果没有,那什么是好的替代品呢?下面是我的意思:
public class Example() {
private ClassField field;
public methodThatUsesField() {
methodReturnType type = field.method(); // I was trying to call .setField() to change the field's method to a mocked value, but can't figure out how to do it
...
}
}
在字段中调用的类非常复杂,但是有一个非常简单的公共方法作为类的根,我想将其设置为特定的值。类本身没有构造函数,所以我需要一种方法来解决这个问题。
这是一个用Java编写的春季启动项目,我需要使用reflectiontesttils才能将参数传递给mock
您可以使用Mockito.spy(field)
,并使用ReflectionTestUtils
注入间谍字段。像这样
@SpringBootTest
class ExampleTest {
@Autowired
private Example example;
@Autowired
private ClassField field;
@Test
void testMethodThatUsesField() {
ClassField spiedField = Mockito.spy(field);
Mockito.when(spiedField.method()).thenReturn(methodReturnTypeValue);
ReflectionTestUtils.setField(example, "field", spiedField);
example.methodThatUsesField();
// assertions
}
}