Java 希望使用EasyMock模拟任何参数

Java 希望使用EasyMock模拟任何参数,java,unit-testing,tdd,mocking,easymock,Java,Unit Testing,Tdd,Mocking,Easymock,使用EasyMock,我希望能够说我期望在mock上调用一个特定的方法,但我不关心用于调用mock的参数 SomeInterface mock = EasyMock.createMock(SomeInterface.class); mock.send(/*anything*/); replay(mock); /* Perform actions that will eventually invoke mock */ verify(mock); 这有可能吗?怎么可能 此外,如果要接受从特定基

使用EasyMock,我希望能够说我期望在mock上调用一个特定的方法,但我不关心用于调用mock的参数

SomeInterface mock = EasyMock.createMock(SomeInterface.class);
mock.send(/*anything*/);
replay(mock);

/* Perform actions that will eventually invoke mock */

verify(mock);
这有可能吗?怎么可能


此外,如果要接受从特定基类派生的任何对象,如何指定?

要接受任何对象作为参数:

mock.send(anyObject());
(可能需要将表达式强制转换为所需的类型。)

此外,要接受任何特定类型的对象,请使用:

mock.send(isA(SomeObject.class));
另外,如果我想接受从 特定的基类,如何指定


不这不行!这是我第一次尝试,但是即使实际对象不是从
Myclass
派生的,它也会成功验证。此表示法只是为了避免将结果从
anyObject()
强制转换为
mock.send()
期望的结果。它不会验证是否使用从
Myclass
派生的类调用该方法。您必须使用
isA()
,如Péter Töröks answers.interest所示。感谢分享:)anyObject(clazz.class)和isA(clazz.class)有什么区别?@ChandraMohan据我所知,没有
anyObject(clazz.class)
,只有
anyObject()
,它返回
Object
的实例,而
isA(clazz.class)
返回类型
clazz
的实例,这正是它们之间的区别。
anyObject()
是EasyMock的静态方法。因此,您可以使用
EasyMock.anyObject()
mock.send(anyObject(Myclass.class));