【发布时间】:2020-05-04 21:43:09
【问题描述】:
我正在模拟一个类并存根其中一个方法以返回我想要的值,但由于我需要传递 .class 值,因此不会返回模拟数据。任何见解都值得赞赏。
public class Generator{
public int getSomething(){
return 1;
}
}
public class Utility{
public void generate(java.lang.Class<?> class){
}
}
@RunWith(SpringRunner.class)
public class TestClass extends Utility{
@Test
public void test()
Generator gen = Mockito.spy(Generator.class)
Mockito.when(gen.getSomething()).thenReturn(4);
Int x = generate(gen.getClass())
// in here 1 is being returned instead of 4
}
}
【问题讨论】:
-
您使用间谍而不是模拟的任何原因?
-
哪个类有
generate方法,它有什么作用?请注意,getClass()不会在模拟或间谍上为您提供与在普通对象上相同的结果。 -
generate 是我用来调用生成器的实用程序类中的一个方法
-
这可能就是问题所在。
-
我认为问题可能是我正在使用 getClass() 方法。我从该方法获得的结果与我从间谍获得的对象有何不同?
标签: java spring-boot mocking mockito