【发布时间】:2012-03-19 15:12:47
【问题描述】:
Mockito 不断拦截我在 DAO 中创建的函数并随机返回 0。我希望该函数实际运行。我在哪里可以配置这个模拟野兽来不理会这个功能?
调试器跳到这里而不是进入我的spring dao:
public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy)
throws Throwable {
if (objectMethodsGuru.isEqualsMethod(method)) {
return proxy == args[0];
} else if (objectMethodsGuru.isHashCodeMethod(method)) {
return hashCodeForMock(proxy);
}
MockitoMethodProxy mockitoMethodProxy = createMockitoMethodProxy(methodProxy);
cglibHacker.setMockitoNamingPolicy(mockitoMethodProxy);
MockitoMethod mockitoMethod = createMockitoMethod(method);
FilteredCGLIBProxyRealMethod realMethod = new FilteredCGLIBProxyRealMethod(mockitoMethodProxy);
Invocation invocation = new Invocation(proxy, mockitoMethod, args, SequenceNumber.next(), realMethod);
return handler.handle(invocation);
}
【问题讨论】:
-
欢迎您搞笑,但首先请确保正确提问。我们需要查看被测试的方法,测试方法和执行结果(如果有)。当然,删除任何可能暴露业务逻辑的东西。
-
该方法只是查询数据库,与 dao 类中的任何其他方法一样。我的测试方法是运行其他人对调用 mockit 拦截的函数的函数进行的 Junit 测试。我只想知道 mockit 是什么以及它是如何/从哪里配置的。我不知道要添加什么代码,因为我不知道 mockit 是如何工作的以及它的配置位置。
-
其实从看到代码我觉得你面对的是Mockito,code.google.com/p/mockito,它是最好的java mocking 框架之一。我建议你学会爱它,因为它可以让你的生活(和你的测试)更轻松。