[英]Cannot Mockito spy class in Spock test?
我正试图在Spock测试中窥探Java类。 我以前在Spock / Groovy中没有遇到Mockito的问题。
当我尝试执行以下操作时:
def service = spy(Service.class)
我收到以下错误:
org.mockito.exceptions.base.MockitoException:
Cannot mock/spy class java.lang.Class
Mockito cannot mock/spy following:
- final classes
- anonymous classes
- primitive types
当我做mock(Service.class)
,它工作正常。
我已经确认该课程不是最终的,匿名的或原始的。
有任何想法吗? 我在课堂上有一个随机生成器(ak)所以我需要间谍不要嘲笑。
谢谢
Mockito不会监视Classes(或Mocks),它会监视(常规)对象。 因此,而不是
def service = spy(Service.class)
你必须写
def service = spy(new Service())
(或适用于您的场景的任何构造函数)。
对Ray的答案来说,你也可以窥探已经创建的实例。 唯一的问题是,在调用spy()
之前调用的所有方法都无法验证。 喜欢:
ClassToSpy spiedInstance;
@Before
public void before () {
spiedInstance = new ClassToSpy();
}
@Test
public void testWillFail() {
spiedInstance.method();
spiedInstance = spy(spiedInstance);
verify(spiedInstance).method();
}
@Test
public void testWillPass() {
spiedInstance = spy(spiedInstance);
spiedInstance.method();
verify(spiedInstance).method();
}
您从testWillFail
获得的错误类似于:
Wanted but not invoked:
classToSpy.method();
-> at your.package.testWillFail(TestClass.java:line)
Actually, there were zero interactions with this mock.
由于事实上,在发现后,你没有调用这种方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.