java - Easymock.expect 抛出 IllegalStateException

标签 java unit-testing easymock

我在这段代码中看到,

expect(myService.getAll(anyBoolean())).andReturn(objectList).anyTimes();
replay(scopeService);

那个expect语句正在抛出 IllegalStateException - missing behavior definition for the preceding method call: myService.getAll(true) Usage is: expect(a.foo()).andXXX()

我知道,如果我没有 andReturn,或者我错过了调用重播,或者我的对象不是模拟,它会抛出此异常。我已经检查了所有这些,但事实并非如此!如果还有其他问题,有人可以告诉我吗? 我之前进行了大约 50 次预期/重播,没有出现任何问题。

最佳答案

您没有提供更多代码,因此我假设您的代码或多或少如下所示:

import static org.easymock.EasyMock.*;

public class SomeTests {
    static class Foo {
        public List<Integer> getAll(boolean value) {
            throw new RuntimeException();
        }
    }

    public void someTestCase() {
        Foo mock = createMock(Foo.class);
        List<Integer> ret = Collections.singletonList(1);
        expect(mock.getAll(anyBoolean())).andStubReturn(ret);
        replay(mock);

        mock.getAll(true); // returns a list with single element 1 rather than throwing an exception
    }
}

我的建议是:

  1. 检查 myService 实例是否是通过其中一种模拟方法创建的
  2. 在切换模拟模式时,应在 myService 上调用 Reply

关于java - Easymock.expect 抛出 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61183656/

相关文章:

java - EasyMock测试代码中间抛出异常

Java Azure Function - 在 BLOB 容器中上传文件

java - 解码Android的反编译源代码

unit-testing - 单元测试代理

ios - 使用 OCMock 模拟类选择器

java - 如何使用EasyMock.capture捕获传入参数?

testing - 没有运行后端的 Spring-WS 2.0 单元测试

java - 为什么Spring MVC会以404响应并报告“在DispatcherServlet中未找到带有URI […]的HTTP请求的映射”?

java - 我可以在 spring 处理带有 header application/x-www-form-urlencoded 的 HTTP POST 中禁用解码请求正文(或获取原始请求正文)

unit-testing - 如何在 rspec 单元测试中隔离 Puppet 函数模拟