我正在使用mockito并使用java6和Spring进行开发。
mockReturnObject("myServiceId.myMethod(String, Integer)", myReturnedObject);
这是一个坏主意:您试图重新实现Mockito已经提供的一些系统,同时失去了Mockito提供的许多特性。然而,有一种方法使这起作用,有一些困难。关键是编写一个自定义答案,使其成为mock的默认答案,然后使用invocationonmock比较您的对象、方法名称和方法参数类型。
public class ReflectiveMockAnswer implements Answer<Object> {
@Override public Object answer(InvocationOnMock invocation) {
// Assume you've successfully parsed each String into a StubbedResponse, with
// Object target, String method, String[] argTypes, and Object returnValue.
// A Set would beat a for-loop here, should you need to optimize.
for (StubbedResponse stubbedResponse : allStubbedResponses) {
if (stubbedResponse.target == invocation.getMock()
&& stubbedResponse.method.equals(invocation.getMethod().getName())
&& stringArraysEqual(stubbedResponse.argTypes,
typeNamesFrom(invocation.getMethod().getParameterTypes())) {
return stubbedResponse.returnValue;
}
}
throw new RuntimeException("Unstubbed method called.");
}
}
// Later...
Object yourMockObject = Mockito.mock(classToMock, new ReflectiveMockAnswer());
此时,您已经在完整版的Mockito中实现了一个简化版的Mockito。您还需要:
除非这是一个“稻草人”或非常临时的解决方案,否则我强烈建议直接将Mockito引入到您的测试用例中,一次一个测试。
有人能告诉我原因或上面代码的更好替代方案吗?
我有一个方法如下: 为了通过反射调用此函数,我尝试了以下代码段,但结果不成功: 那么,有没有一种方法可以通过Java反射调用像findEntity这样的方法? 谢谢
问题内容: 有没有一种使用通用参数模拟类的干净方法?说我必须模拟一个类,我需要将该类传递给需要一个的方法。我可以很容易地做到以下几点: 假定返回通用类型。但是,当我稍后将其传递给期望的方法时,将会有小猫。铸造是这样做的唯一方法吗? 问题答案: 我认为您确实需要强制转换,但应该不会太糟:
我正在尝试模拟一个静态void方法,该方法采用参数 我的下属:
如果反射值对象(reflect.Value)中值的类型为函数时,可以通过 reflect.Value 调用该函数。使用反射调用函数时,需要将参数使用反射值对象的切片 []reflect.Value 构造后传入 Call() 方法中,调用完成时,函数的返回值通过 []reflect.Value 返回。 下面的代码声明一个加法函数,传入两个整型值,返回两个整型值的和。将函数保存到反射值对象(refle
异常堆栈跟踪