【问题标题】:JMock expecting void method to be invokedJMock 期望调用 void 方法
【发布时间】:2015-12-01 18:24:07
【问题描述】:

我正在使用JMock 在 ProcessingTest 类中测试以下方法:

public void handle(Process process) {
    processor.handleProcess(process);
}

我已经模拟了 processorprocess 类。对于我对这个特定方法的测试,我对JMock 的期望如下:

checking( new Expectations() {
         {
            oneOf( ProcessingTest.this.processor ).handleProcess(
                  ProcessingTest.this.process );
         }
      } );

这会导致以下错误:

unexpected invocation ...
no expectations specified
....

我认为期望中有一些不正确的地方,它们应该是什么? 我曾试图期望该方法在调用atLeast 一次,但这似乎是void 方法的问题。

【问题讨论】:

标签: java junit jmock


【解决方案1】:

我不知道您的问题出在哪里,因为您没有提供足够的代码。这是使用 JMock 执行此操作的方法:

import org.jmock.Expectations;
import org.jmock.integration.junit4.JUnitRuleMockery;
import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.Rule;
import org.junit.Test;

public class ProcessingTest {

    @Rule
    public final JUnitRuleMockery mockery = new JUnitRuleMockery() {{
        setImposteriser(ClassImposteriser.INSTANCE);
    }};

    // just some dummy object, we will be comparing reference only
    private final Process process = mockery.mock(Process.class);

    private final Processor processor = mockery.mock(Processor.class);

    private final Processing processing = new Processing(processor);

    @Test
    public void test() {
        mockery.checking(new Expectations() {{
            oneOf(ProcessingTest.this.processor).handleProcess(ProcessingTest.this.process);
        }});

        processing.handle(process);
    }

}

public class Processing {

    private final Processor processor;

    public Processing(Processor processor) {
        this.processor = processor;
    }

    public void handle(Process process) {
        processor.handleProcess(process);
    }

}

public interface Processor {

    void handleProcess(Process process);

}

你需要这些依赖:

<dependency>
    <groupId>org.jmock</groupId>
    <artifactId>jmock</artifactId>
    <version>2.6.0</version>
</dependency>
<dependency>
    <groupId>org.jmock</groupId>
    <artifactId>jmock-legacy</artifactId>
    <version>2.6.0</version>
</dependency>
<dependency>
    <groupId>org.jmock</groupId>
    <artifactId>jmock-junit4</artifactId>
    <version>2.6.0</version>
</dependency>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多