繁体   English   中英

EasyMock 模拟具有不同参数的相同方法

[英]EasyMock mock same method with different parameters

这个问题与这个问题类似,但针对的是 EasyMock 而不是 Mockito。

我有一些这样的测试代码。

expect(mockObject.someMethod("some input", ReturnClassOne.class)).andReturn(returnObjectOne);
expect(mockObject.someMethod("some different input", ReturnClassTwo.class)).andReturn(returnObjectTwo);

但这导致第二行抛出以下异常。

java.lang.IllegalStateException:在 mock 上调用的最后一个方法已经有一个非固定计数集。

我如何模拟mockObject.someMethod来接受两个具有不同输入参数的调用?

这应该完全有效。 EasyMock 支持这两种记录并且会区分。 例如,下面的代码工作正常。

所以你的情况是具体的。 也许someMethod签名有一些特别之处。 我会对完整的测试用例感兴趣。

public class MyTest {

    public static class ReturnClassOne {}
    public static class ReturnClassTwo {}

    public static class MyClass {

        public <T> T someMethod(String s, Class<T> c) {
            try {
                return c.newInstance();
            } catch (InstantiationException | IllegalAccessException e) {
                throw new RuntimeException(e);
            }
        }

    }

    @Test
    public void test() {
        MyClass mockObject = mock(MyClass.class);
        expect(mockObject.someMethod("some input", ReturnClassOne.class)).andReturn(new ReturnClassOne());
        expect(mockObject.someMethod("some different input", ReturnClassTwo.class)).andReturn(new ReturnClassTwo());
        replay(mockObject);
        mockObject.someMethod("some input", ReturnClassOne.class);
        mockObject.someMethod("some different input", ReturnClassTwo.class);
        verify(mockObject);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM