EasyMock 和返回泛型的方法 class
EasyMock and methods returning a generic class
只是想知道如何从使用 EasyMock 或 PowerMock 的方法中模拟类型 Class 的 return 对象?
我正在尝试模拟此接口方法的 return 类型
Class<T> getRootBeanClass();
我尝试了以下但没有任何乐趣
EasyMock.expect(mockViolation.getRootBeanClass()).andReturn(EasyMock.anyObject());
我收到此错误消息
java.lang.IllegalStateException: matcher calls were used outside expectations
非常感谢任何帮助
anyObject()
是一个 argument 匹配器。
您使用它以便 EasyMock 可以区分 您提出的不同模拟规范。喜欢:
EasyMock.expect(mock.foo(eq("A"), anyObject()).andReturn(resultForA);
对比
EasyMock.expect(mock.foo(eq("B"), anyObject()).andReturn(resultForB);
您 return 的对象必须是 真实的 现有对象(可以模拟,也可以不模拟).但是 anyObject()
不会为您创建对象!
EasyMock 无法为您生成泛型 - 因此需要强制转换,例如:
Class<Foo> foo = (Class<Foo>) mock(Class.class)
但这在这种情况下不起作用 - 因为 java.lang.Class 是最终的! EasyMock 不能模拟 final 类!为此你需要 PowerMock - 或者(我的建议)最新版本的 Mockito。
如果您选择 Mockito:请阅读他们的文档 - 因为您必须 启用 最终 类 的模拟 - 它目前是一个实验性功能。
只是想知道如何从使用 EasyMock 或 PowerMock 的方法中模拟类型 Class 的 return 对象?
我正在尝试模拟此接口方法的 return 类型
Class<T> getRootBeanClass();
我尝试了以下但没有任何乐趣
EasyMock.expect(mockViolation.getRootBeanClass()).andReturn(EasyMock.anyObject());
我收到此错误消息
java.lang.IllegalStateException: matcher calls were used outside expectations
非常感谢任何帮助
anyObject()
是一个 argument 匹配器。
您使用它以便 EasyMock 可以区分 您提出的不同模拟规范。喜欢:
EasyMock.expect(mock.foo(eq("A"), anyObject()).andReturn(resultForA);
对比
EasyMock.expect(mock.foo(eq("B"), anyObject()).andReturn(resultForB);
您 return 的对象必须是 真实的 现有对象(可以模拟,也可以不模拟).但是 anyObject()
不会为您创建对象!
EasyMock 无法为您生成泛型 - 因此需要强制转换,例如:
Class<Foo> foo = (Class<Foo>) mock(Class.class)
但这在这种情况下不起作用 - 因为 java.lang.Class 是最终的! EasyMock 不能模拟 final 类!为此你需要 PowerMock - 或者(我的建议)最新版本的 Mockito。
如果您选择 Mockito:请阅读他们的文档 - 因为您必须 启用 最终 类 的模拟 - 它目前是一个实验性功能。