`

easymock java.lang.IllegalStateException: 2 matchers expected, 1 recorded.

阅读更多
When using EasyMock 2 for testing, typically we need to set up expectations before replay, like this:

    expect(mockEmployeeRepository
       .findByFirstNameAndLastName("John", "Doe"))
       .andReturn(employees);

Sometimes, you don't know exactly what parameter will be used for the expected call, you can instead specify the class of the parameter, such as:

    expect(mockEmployeeRepository
       .findBySpecification(isA(EmployeeSearchSpecification.class))
       .andReturn(employees);

What if you know the exact value of some but not all parameters? I tried the following:

    expect(mockEmployeeRepository
       .findByDepartmentAndSpecification("HR",
       isA(EmployeeSearchSpecification.class))
       .andReturn(emplooyees);

Unfortunately, running this test will get the following exception thrown by EasyMock:

    java.lang.IllegalStateException: 2 matchers expected, 1 recorded.

The correct way is to wrap the known parameter with an "eq" matcher:

    expect(mockEmployeeRepository
       .findByDepartmentAndSpecification(eq("HR"),
       isA(EmployeeSearchSpecification.class))
       .andReturn(employees);

This is a small quirk when using EasyMock 2.2...


need import static org.easymock.EasyMock.eq;
分享到:
评论

相关推荐

    easymock教程.zip

    - **创建模拟对象**:使用`EasyMock.createMock()`创建一个模拟对象,指定要模拟的接口或类。 - **设置期望**:通过`expect()`方法定义模拟对象的方法应该如何被调用和返回值。 - **启动模拟**:调用`EasyMock....

    easyMock

    - **创建模拟对象**:你可以使用`EasyMock.createMock()`方法创建一个模拟对象,然后通过`EasyMock.replay()`进入“播放”模式,让模拟对象按照预期执行。 - **设置预期**:使用`expect()`方法设置对模拟对象的期望...

    easymock.jar,easymockclassextension.jar

    1. **导入库**:在你的测试类中,你需要引入Easymock的相关库,包括`easymock.jar`和`easymockclassextension.jar`。 2. **创建模拟对象**:使用Easymock的`createMock`或`createNiceMock`方法创建模拟对象。 3. *...

    easymock教程.pdf

    easymock教程 easymock是一种流行的mocking框架,用于单元测试中模拟依赖对象的行为。下面是关于easymock的详细知识点: ### easymock的基本概念 * Mock对象:是一种虚拟对象,模拟真实对象的行为,用于单元测试...

    easymock2.4.zip

    import static org.easymock.EasyMock.*; public class MyTest { @Test public void testMyMethod() { // 创建mock对象 MyDependency mockDependency = createMock(MyDependency.class); // 预期方法调用 ...

    junit4.4.jar +easymock3.0.jar

    标题中的"junit4.4.jar +easymock3.0.jar"提及了两个重要的Java测试库:JUnit 4.4和EasyMock 3.0。这些是用于开发过程中的单元测试的关键工具。 JUnit是Java编程语言中最广泛使用的单元测试框架之一。它允许开发者...

    easyMock2.2.doc

    EasyMock2.2版本相较于早期版本(如EasyMock1.x),在使用方式和功能上进行了显著的改进,使其更加灵活和易于使用。 #### 易于理解的示例:`ClassUnderTest`测试 为了深入理解EasyMock2.2的使用方法,我们将通过一...

    easymock-3.2.zip

    EasyMock 3.2 是一个流行的开源Java模拟框架,它为开发者提供了强大的单元测试支持。在Java开发中,单元测试是验证代码独立模块正确性的关键步骤。EasyMock可以帮助程序员模拟对象的行为,使得测试过程更加可控,...

    easymock-3.2.jar

    EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest。

    easymock.jar

    easymock.jar is a software testing tool, which has a lot in common wiht Jmock

    easymock.jar包

    《深入理解easymock.jar:Java单元测试的利器》 在软件开发中,单元测试是一种重要的质量保证手段,它允许开发者验证代码的各个部分独立工作是否正常。Easymock是一个流行的Java模拟框架,其核心是easymock.jar库,...

    Learning EasyMock3.0 By Official Example

    例如,使用 `EasyMock.expect()` 方法设定预期,然后调用 `EasyMock.replay()` 准备测试,最后使用 `EasyMock.verify()` 进行验证。 3. `EndecaConceptsGuide.pdf`:Endeca 是一个数据管理平台,这个指南可能涉及到...

    Centos7-部署EasyMock.doc

    在本文中,我们将深入探讨如何在CentOS 7操作系统上部署EasyMock,这是一个流行的Java模拟框架,用于单元测试。在开始之前,确保你的系统已经更新并安装了必要的基础工具。 首先,我们需要设置Node.js环境,因为...

    easymock-2.5.2.jar

    easymock-2.5.2.jar easymock-2.5.2.jar 单元测试

    Easymock教程

    Easymock是一款广泛使用的Java单元测试框架,它允许开发者创建和控制模拟对象,以便在测试过程中隔离被测代码,确保测试的准确性。本教程旨在帮助初学者快速掌握Easymock的基本用法和核心概念。 一、Easymock简介 ...

    模拟测试辅助工具easyMock.zip

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较...

    EasyMock.jar

    1. **模拟对象创建**:使用`EasyMock.createMock()`方法创建模拟对象。这将返回一个与指定类行为完全一样的对象,但所有的方法调用都将被记录下来,以便后续验证。 2. **期望设置**:通过`expect()`方法,你可以...

    easymock2.4+EasyMock使用简明手册.pdf

    1. **创建模拟对象**:使用`EasyMock.createMock()`方法创建模拟对象。 2. **设置期望**:使用`expect()`方法设置模拟对象的期望行为。 3. **预定义返回值或异常**:使用`andReturn()`、`andThrow()`等方法设定模拟...

    EasyMock 使用案例(含lib)

    2. **创建模拟对象**:使用`EasyMock.createMock()`方法创建模拟对象。这个对象将代表你要模拟的真实对象。例如,如果你有一个名为`MyService`的服务类,你可以创建一个`MyService`的模拟对象。 3. **定义行为**:...

    easymockclassextension.jar

    easymockclassextension.jar

Global site tag (gtag.js) - Google Analytics